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



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

glibc文档非常清楚地说明了应该在哪里使用aligned_alloc:

GNU系统中mallocrealloc返回的块地址总是8的倍数(或64位系统中的16)。如果你需要一个块的地址是大于2的倍数,使用aligned_allocposix_memalign

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

作为一个例子,我似乎记得SSE2 (SIMD)指令需要他们的数据在16字节边界上对齐,所以你可以使用aligned_alloc给你,即使在malloc只保证对齐到8字节边界的系统上。

相关内容

  • 没有找到相关文章

最新更新