是否可以使用placement new将单个内存池用于多类型变量。我需要在单个池中声明整数和字符变量。
我是否应该将池进一步划分为2,然后将其用于不同的变量类型或者还有其他方法?
答案 0 :(得分:2)
如果您的数据类型是可变长度,则最好使用标准堆进行内存管理。标准堆已针对此用例进行了高度优化。
使用内存池通常仅在始终分配相同大小的对象时才有用。然后很容易将池划分为相同大小的单元格,执行优化,如系统堆无法执行的自由列表。
答案 1 :(得分:1)
简短的回答是肯定的,但这通常只在你有一些内存映射IO(共享内存???)时才需要。 AFAIK没有增加速度。究竟你在做什么?
您是否考虑过使用第三方游泳池?我找到了一个非常通用的实现here。
Boost::pool也可能很有趣