c++ - 在 64 位平台上分配的内存块的字节对齐方式是什么?

标签 c++ c malloc

我一直假设 malloc 返回一个分配的内存块,其地址对于同时使用 Visual Studio 和 gcc 的 64 位系统来说是 16 字节对齐的。然而,我一直在阅读一些关于这个问题的相互矛盾的文章。 MSDN 网站对此非常清楚,但 GNU 文档则更加“细致入微”。

任何澄清都会非常有帮助。

这里有很好的答案:

Aligned memory management?

最佳答案

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/

相关文章:

c++ - C++使用卡在函数调用中的辅助线程取消pthread

c++ - C++ 中的私有(private)成员与临时变量

c++ - 无法编译 dbus-cxx 工具

c - 从C中的txt文件读取函数?

java - 实现按位 XNOR

c - 使用数字和字母打印 char 数组的元素

c - 小 C 程序产生 500 多个 malloc?

C++ 编程,动态内存不能正常使用 malloc 和 calloc

c++ - 如何加快计算最长公共(public)子串的长度?

c - 在 c : when do I have to use malloc 中实现字符串队列