对齐的malloc和标准malloc之间有什么不同?

时间:2016-09-24 13:47:44

标签: ubuntu gcc malloc ubuntu-16.04 c11

我是malloc和对齐malloc的新手。我知道如何使用它们。但是,我不确切知道在哪种情况下我们应该使用对齐的malloc而不是标准的malloc。你能解释一下吗?谢谢大家。

1 个答案:

答案 0 :(得分:2)

glibc documentation可以清楚地说明您应该在哪里使用aligned_alloc

  

GNU系统中mallocrealloc返回的块的地址始终是8的倍数(或64位系统上的16)。如果您需要一个地址是2的幂的倍数的块,请使用aligned_allocposix_memalign

C标准已经保证malloc将为任何标准类型返回适当对齐的内存块,但可能存在您需要或需要更严格对齐的情况。

作为一个例子,我似乎记得SSE2(SIMD)指令需要在16字节边界上对齐它们的数据,因此即使在aligned_alloc仅保证的系统上,您也可以使用malloc来提供对齐到8字节边界。