为什么双重对齐到8字节边界而不是4字节

时间:2012-10-15 13:18:18

标签: c structure

  

可能重复:
  Why double in C is 8 bytes aligned?

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

sizeof d是24.因为它出来是双重对齐到8字节边界。任何人都可以解释为什么它与8字节边界对齐而不是4字节边界。我读了一些所有元素都对齐到那里大小?为什么会如此

1 个答案:

答案 0 :(得分:1)

对齐是实现定义的。

当对象类型存在对齐要求时,它是一个小于或等于对象类型大小的值。类型的对齐通常与类型的大小相同。

当遵循IEEE-754时,double通常对应于IEEE-754 binary64类型,其大小为8字节。