当前位置: 首页 > 知识库问答 >
问题:

当最小分配对齐方式为16字节时,如何进行24字节大小的分配?

东郭凯捷
2023-03-14

如何从应用程序中分配24字节块(8字节对齐)以有效地使用内存?

我尝试了aligned_alloc(8,24),但它仍然分配32字节,16字节对齐。

共有1个答案

朱兴学
2023-03-14

如果您正在进行大量的24字节的分配,并且这些分配的内存效率是一个问题,那么根本不应该直接使用malloc。您应该使用大小为24字节的池分配器。

池分配器从堆中分配一大块内存,然后将其分成指定大小的固定大小的块。这样,不仅可以避免对齐开销,还可以避免堆用于跟踪空闲数据块的信息开销。您还有助于避免这种微小分配造成的碎片。释放这些分配相当快(就像制造它们一样)。诸如此类。

使用池分配器,您应该能够准确地分配所需的内容,而不会干扰正在使用的库。您可以为10,000个24字节的块分配一个内存板,唯一的开销将是跟踪空闲块所需的bookkepping(如果您聪明的话,它可以主要使用空闲块本身)。

 类似资料: