我一直假设 malloc 返回一个分配的内存块,其地址对于同时使用 Visual Studio 和 gcc 的 64 位系统来说是 16 字节对齐的。然而,我一直在阅读一些关于这个问题的相互矛盾的文章。 MSDN 网站对此非常清楚,但 GNU 文档则更加“细致入微”。
任何澄清都会非常有帮助。
这里有很好的答案:
最佳答案
malloc
返回一个具有基本对齐方式的指针 (C11 §7.22.3),它是 max_align_t
(C11 6.2.8) 的对齐方式。这因操作系统而异,在 Windows 上这对于 SSE 来说还不够好。
有various options ,但如果是针对 SSE,在我看来,调用 _mm_malloc
和 _mm_free
是一个不错的方法。如果需要,可以使用宏将这些名称映射到适当的特定于平台的设施,例如 _aligned_malloc
。
关于c++ - 在 64 位平台上分配的内存块的字节对齐方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42158071/