[問題] struct alignment 的問題

看板C_and_CPP (C/C++)作者 (眠月)時間16年前 (2009/05/14 01:43), 編輯推噓5(508)
留言13則, 5人參與, 最新討論串1/2 (看更多)
小紅帽 64 bit gcc 3.4 struct A { struct B { struct C { int a ; double a ; float a ; int b ; double b ; float b ; int c ; float c ; float c ; } ; } ; } ; sizeof : 12 24 12 想不透為什麼 struct B 會是 24 阿~~~ 不是應該 8 + 8 + 4 = 20 嗎 O_Q??? -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.109.211

05/14 01:54, , 1F
因為double是8byte的block吧,float就被padding了
05/14 01:54, 1F

05/14 03:54, , 2F
long double?
05/14 03:54, 2F

05/14 04:39, , 3F
這個我困惑了.. double 8byte 沒必要去 padding float 阿
05/14 04:39, 3F

05/14 09:00, , 4F
padding 會補到最大內建型別大小的整數倍
05/14 09:00, 4F

05/14 09:01, , 5F
^結構內用到的
05/14 09:01, 5F

05/14 09:04, , 6F
小弟我記得應該padding到自己這個member的倍數address就
05/14 09:04, 6F

05/14 09:04, , 7F
好了啊@_@" 跟y大有同樣的疑惑....Orz
05/14 09:04, 7F

05/14 09:17, , 8F
雄雄想到, 這樣也做padding, 不會是為了開array時還是都
05/14 09:17, 8F

05/14 09:17, , 9F
有alignment吧??
05/14 09:17, 9F

05/14 09:18, , 10F
該不會
05/14 09:18, 10F

05/14 09:19, , 11F
所以自然就形成了c大所說的結果這樣@_@"
05/14 09:19, 11F

05/14 09:19, , 12F
我也是這麼認為的
05/14 09:19, 12F

05/14 19:01, , 13F
ㄟ~~~!有道理耶!XD
05/14 19:01, 13F
文章代碼(AID): #1A2mRKE- (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A2mRKE- (C_and_CPP)