【发布时间】:2019-12-06 09:58:00
【问题描述】:
有没有办法一次性释放boost::singleton_pool 中的所有对象?
我发现我可以使用这些方法:
static void free(void *const);
static void ordered_free(void *const);
static void free(void *const, const size_type);
static void ordered_free(void *const, const size_type);
我想我可以使用它们通过手动迭代来释放所有对象。但是,有没有办法说“释放所有对象”,以便池再次完全释放?
基本上我想要purge_memory() 之类的东西,但这不会将内存释放回系统,而是将其分配在池中。
这样做的原因是我在池中构建了一个大对象(~2GB),我想很快摆脱它并开始构建一个新对象。调用purge_memory() 当前需要大约 2 秒,并且还会向系统释放内存(在诊断或任务管理器中,您可以看到进程内存在减少)。我希望通过简单地释放池中的东西而不实际解除分配,我可以很快炸毁第一个对象并开始构建下一个。
【问题讨论】:
标签: c++ boost memory-management boost-pool