C++ 使用新位置的内存管理

C++ 使用新位置的内存管理,c++,C++,使用placement new可以为多类型变量使用单个内存池吗。我需要在单个池中声明整数和字符变量 我应该将池进一步划分为2,然后将其用于不同的变量类型,还是有其他方法?如果您的数据类型是可变长度的,则最好使用标准堆进行内存管理。标准堆为此用例进行了高度优化 通常,只有在一致地分配相同大小的对象时,使用内存池才有用。然后就可以很容易地将池划分为大小相等的单元,并执行系统堆无法执行的优化,如自由列表 如果数据类型是可变长度的,则最好使用标准堆进行内存管理。标准堆为此用例进行了高度优化 通常,只有在

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


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

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


通常,只有在一致地分配相同大小的对象时,使用内存池才有用。然后就可以很容易地将池划分为大小相等的单元,并执行系统堆无法执行的优化,如自由列表

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


通常,只有在一致地分配相同大小的对象时,使用内存池才有用。然后就可以很容易地将池划分为大小相等的单元,并执行系统堆无法执行的优化,如自由列表

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

您是否考虑过使用第三方池?我发现了一个非常通用的实现


可能也很有趣

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

您是否考虑过使用第三方池?我发现了一个非常通用的实现


也可能是有趣的:

你是否考虑过使用工会?代码>并集{int i;char c;}即使我将并集用于字符,这样会浪费内存吗?我怀疑由于对齐问题,分配器分配的字节数不会少于4个。@Saksham,会的,但如果您将变量打包得尽可能近,可能会导致内存访问缓慢和/或因对齐错误而崩溃。此外,我认为您不能仅在没有违反C的严格别名的情况下执行这种未对齐的访问。代码>并集{int i;char c;}即使我将并集用于字符,这样会浪费内存吗?我怀疑由于对齐问题,分配器分配的字节数不会少于4个。@Saksham,会的,但如果您将变量打包得尽可能近,可能会导致内存访问缓慢和/或因对齐错误而崩溃。此外,我认为,如果不违反C语言的严格别名,就不能仅使用指针强制转换进行这种未对齐的访问。我正在编写一个程序来模拟一个嵌入式项目,因此需要一个内存池而不是一个标准的heapI正在编写一个程序来模拟一个嵌入式项目,因此需要一个内存池而不是一个标准的堆