C++ 释放boost::singleton_池中的所有对象

C++ 释放boost::singleton_池中的所有对象,c++,boost,memory-management,boost-pool,C++,Boost,Memory Management,Boost Pool,有没有办法一次释放boost::singleton_池中的所有对象 我看到我可以使用这些方法: 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); 我想我可以使用它们通过手动迭代来释放所有对象。但是,有

有没有办法一次释放
boost::singleton_池中的所有对象

我看到我可以使用这些方法:

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秒左右的时间,并且还会释放系统内存(在诊断或任务管理器中,您可以看到进程内存在减少)。我的希望是,通过简单地释放池中的对象而不实际释放,我可以很快地释放第一个对象并开始构建下一个对象。

假设您在singleton_池中分配了1000个对象,总计2GB。如果有一个“free_all()”函数(现在没有),您如何确保没有指向池中包含的数据的指针?您需要迭代所有这些指针来重置它们。在这样做的同时,您还可以在每个节点上调用
singleton\u pool::free(ptr)

基本上,您要求的API不存在,而且可能不应该存在。如果您想要最灵活(在我看来也是最有用)的API,请使用常规的boost::pool,而不是顶部那些通常阻碍优化的更华丽的层。但是,它仍然没有“free_all()”函数,因为这同样是一个bug农场