0

是否可以使用placement new 将单个内存池用于多类型变量。我需要在单个池中声明整数和字符变量。

我应该将池进一步划分为 2,然后将其用于不同的变量类型,还是有其他方法?

4

2 回答 2

2

如果您的数据类型是可变长度的,则最好使用标准堆进行内存管理。标准堆针对此用例进行了高度优化。

使用内存池通常仅在您始终分配相同大小的对象时才有用。然后很容易将您的池划分为大小相等的单元,并执行系统堆无法执行的优化,如空闲列表。

于 2013-07-23T17:20:53.960 回答
1

简短的回答是肯定的,但这通常仅在您有一些内存映射 IO(共享内存???)时才需要。AFAIK没有获得速度增加。你到底在做什么?

您是否考虑过使用 3rd 方池?我在这里找到了一个非常通用的实现。

Boost::pool也可能很有趣

于 2013-07-23T17:26:59.113 回答