我以为short是1?为什么它增加了 8 个,从 16 个增加到 24 个?
问问题
977 次
这是数据类型对齐的问题。
有人可以向我解释为什么偏移量是 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 个?