我认为短期是1?为什么它增加了8,从16增加到24?
答案 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?