【发布时间】:2011-01-01 15:35:09
【问题描述】:
有人可以给我一个简短而合理的解释,说明为什么编译器会向数据结构添加填充以对齐其成员吗?我知道这样做是为了让 CPU 可以更有效地访问数据,但我不明白为什么会这样。
如果这只是 CPU 相关的,为什么在 Linux 中是双 4 字节对齐而在 Windows 中是 8 字节对齐?
【问题讨论】:
-
有两个独立但相关的问题:数据对齐和数据结构填充
-
gcc 在 8 字节以及 x86 机器上对齐 dobules,与 Microsoft 的编译器相同。
-
如果 CPU 以 4 字节的块读取数据,为什么双精度 8 字节对齐?那么 double 是 8 字节还是 4 字节对齐并不重要,不是吗?
标签: performance alignment memory-alignment abi