Ubuntu 对齐malloc和标准malloc之间的差异?

Ubuntu 对齐malloc和标准malloc之间的差异?,ubuntu,gcc,malloc,ubuntu-16.04,c11,Ubuntu,Gcc,Malloc,Ubuntu 16.04,C11,我对malloc和malloc都是新手。我知道如何使用它们。然而,我不知道在哪种情况下我们应该使用对齐的malloc而不是标准的malloc。你能给我解释一下吗?这说明你应该在哪里使用aligned\u alloc: GNU系统中由malloc或realloc返回的块地址始终是8的倍数(或64位系统中的16倍)。如果您需要一个地址为二的二次幂倍数的块,请使用aligned\u alloc或posix\u memalign C标准已经保证malloc将为任何标准类型返回一个适当对齐的内存块,但在某

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

这说明你应该在哪里使用
aligned\u alloc

GNU系统中由
malloc
realloc
返回的块地址始终是8的倍数(或64位系统中的16倍)。如果您需要一个地址为二的二次幂倍数的块,请使用
aligned\u alloc
posix\u memalign

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


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

语言?我假设是C语言,但您还应该提供其他环境细节(操作系统、语言实现等)。标准C只有
malloc
,保证对所有标准数据类型正确对齐。我在Ubundated中的C11标准中使用这些标记,请确认和/或根据需要进行更改。对不起,我已将它们作为标记放置