2012-11-13 57 views

回答

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?爲什麼它從16增加到8?

+0

那麼短呢? – PhoonOne

+0

你無法知道短褲有多大,因爲你只能通過查看*之後的字段對齊來判斷。短暫之後沒有領域。 ** short s **的偏移量爲24,8大於** double d **偏移量的原因是因爲double是8個字節。 – librik