对齐的malloc和标准malloc之间的区别?

黑咖啡

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

紫罗兰色

glibc文档使您可以在何处合理地明确指出aligned_alloc

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章