【发布时间】:2013-06-27 04:05:06
【问题描述】:
malloc() 文档说返回的指针适合任何类型的变量对齐。在我的系统上,long double 的大小为 12,但是 malloc() 返回的一些指针在 8 字节边界上对齐,而不是 12。(ptr % 12 给出 4)。谁能指出我在这里错过了什么?提前致谢。
【问题讨论】:
-
您从哪里了解到 malloc 返回对齐的内存?
-
在手册页中。请参阅此处的返回值linux.die.net/man/3/malloc。还是我误解了什么?
-
12 字节长的双精度数不需要 12 字节对齐。
-
什么系统有一个 12 字节长的 double?
-
对齐限制源于 CPU 总线逻辑设计。不深入技术细节,你只会看到 2 的幂。12 不是 2 的幂,不能是对齐大小。