Boost pool singleton RequestedSize设置

时间:2014-01-12 17:54:09

标签: c++ memory-management boost

我正在尝试将boost::singleton_pool用于内存池。我需要它来解决以下问题:

在我的应用程序中,我偶尔为固定字节数的对象分配内存。然后在某些时候我解除了那些(也偶尔一个一个)。在内存中总是最多N(在编译时设置)已分配对象的数量。每当其中一个结束其生命周期时,它就会被解除分配。所以我的问题是,如果提到的对象名称是demo_block,我应该将RequestedSize指定为N * sizeof(demo_block)吗?就是这样:

 struct MyOrderTag{};
typedef boost::singleton_pool<MyOrderTag,sizeof(demo_block) * MaxObjects> MyMemPool;

或只是一个对象的大小?

struct MyOrderTag{};
typedef boost::singleton_pool<MyOrderTag,sizeof(demo_block)> MyMemPool;

1 个答案:

答案 0 :(得分:1)

您应该指定这样的大小:

struct MyOrderTag{};
typedef boost::singleton_pool<MyOrderTag,sizeof(demo_block)> MyMemPool;

您可以查看singleton_pool正在使用的池interface。创建池时,它将接收要分配的大小。这就是为什么池接口的不同malloc函数在参数中不占用大小的原因,它在池创建时是固定的。