IA32(x86)机器上的数据类型定义

时间:2012-11-13 05:11:39

标签: c x86

enter image description here

我认为短期是1?为什么它增加了8,从16增加到24?

1 个答案:

答案 0 :(得分:4)

这是数据类型alignment的问题。

  

有人可以向我解释为什么偏移是0,4,8 16和24?

第一项始终位于结构的开头(偏移0)。

char占用一个字节,因此下一个偏移量为1.但是,double*是4字节对齐(性能),因此它转到下一个4字节偏移量,4。在x86(32位)上,一个指针是4个字节,因此下一个偏移量为8,其中i为。

  

我知道double的字节大小是8而int是4,但我认为short是1?为什么它增加了8,从16增加到24?