提升池singleton RequestedSize安装程序

Boost pool singleton RequestedSize setup

本文关键字:安装 程序 RequestedSize singleton      更新时间:2023-10-16

我正在尝试使用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;

您应该这样指定大小:

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

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