使用放置新内存管理

时间:2013-07-23 17:09:01

标签: c++

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

您是否考虑过使用第三方游泳池?我找到了一个非常通用的实现here

Boost::pool也可能很有趣