我知道我可以使用 boost singleton_pool如下:
typedef boost::singleton_pool< OrderTag,sizeof(memSize)>Pool;
这是模板类,必须在编译时知道 memSize。但我只在运行时填充 memSize,它的值可能因不同的设置而异。这是否意味着我根本不能在动态中使用 boost::pool 类场景,因为它们都是模板类?
最佳答案
您可以使用 boost::pool接口(interface)并在其构造函数上初始化大小:
void func()
{
std::size_t memSize = getMemSize();
boost::pool<> p(memSize);
char* ptr = p.malloc();
}
或者使用boost::singleton_pool大小为 1 的接口(interface),然后分配多个 block (在实现之前你一定要分析这个解决方案):
typedef boost::singleton_pool<MyPoolTag, sizeof(char)> my_pool;
void func()
{
std::size_t memSize = getMemSize();
char * ptr = my_pool.ordered_malloc(memSize);
my_pool::purge_memory();
}
关于c++ - 使用动态参数 boost 内存池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21090378/