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