我是malloc和对齐malloc的新手。我知道如何使用它们。但是,我不确切知道在那种情况下我们应该使用对齐的malloc而不是标准的malloc。你能跟我解释一下吗?
该glibc
文档使您可以在何处合理地明确指出aligned_alloc
:
由GNU系统
malloc
或realloc
在GNU系统中返回的块的地址始终是8的倍数(在64位系统上为16)。如果您需要一个块的地址是其高2的倍数的倍数,请使用aligned_alloc
或posix_memalign
。
C标准已经保证可以malloc
为任何标准类型返回适当对齐的存储块,但是在某些情况下,您可能需要或需要更严格的对齐。
作为一个示例,我似乎想起了SSE2(SIMD)指令需要将其数据对齐16字节边界,因此aligned_alloc
即使在malloc
仅保证对齐8字节边界的系统上,也可以使用它来为您提供数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句