gpt4 book ai didi

c++ - 使用动态参数 boost 内存池

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:42 27 4
gpt4 key购买 nike

我知道我可以使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com