Possible Duplicate:
Why double in C is 8 bytes aligned?

structure s{
    char a;
    double b;
    int c;
}d;

d的大小是24。因为它是双字节的,所以是与8字节的边界对齐的。有人能解释为什么它是与8字节的边界对齐的,而不是与4字节的边界对齐的吗?我读到一些资料,所有的元素都是与这个大小对齐的?为什么会这样

最佳答案

对齐是实现定义的。
当对象类型有对齐要求时,它是一个小于或等于对象类型大小的值。类型的对齐方式通常与类型的大小相同。
当遵循IEEE-754时,通常对应于大小为8字节的doubleIEEE-754类型。

09-04 17:47