我是malloc和对齐malloc的新手。我知道如何使用它们。但是,我不确切知道在哪种情况下我们应该使用对齐的malloc而不是标准的malloc。你能解释一下吗?谢谢大家。
答案 0 :(得分:2)
glibc
documentation可以清楚地说明您应该在哪里使用aligned_alloc
:
GNU系统中
malloc
或realloc
返回的块的地址始终是8的倍数(或64位系统上的16)。如果您需要一个地址是2的幂的倍数的块,请使用aligned_alloc
或posix_memalign
。
C标准已经保证malloc
将为任何标准类型返回适当对齐的内存块,但可能存在您需要或需要更严格对齐的情况。
作为一个例子,我似乎记得SSE2(SIMD)指令需要在16字节边界上对齐它们的数据,因此即使在aligned_alloc
仅保证的系统上,您也可以使用malloc
来提供对齐到8字节边界。