Re: [問題] struct alignment 的問題

看板C_and_CPP (C/C++)作者 (我愛ASM)時間16年前 (2009/05/14 02:06), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《yoco315 (眠月)》之銘言: : 小紅帽 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??? Try This One XD #pragma pack(push) /* push current alignment to stack */ #pragma pack(4) /* set alignment to 4 byte boundary */ struct B { double a ; double b ; float c ; }; #pragma pack(pop) /* restore original alignment from stack */ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.132.20.82

05/14 04:39, , 1F
我知道 pack, 但是我很困惑他為什麼要去 padding float XD
05/14 04:39, 1F

05/14 05:22, , 2F
補充一下,我知道 alignment XD 但是我不懂他這邊幹嘛要al
05/14 05:22, 2F

05/14 05:22, , 3F
那個 int,int,int 的,最後一個都沒 padding...
05/14 05:22, 3F

05/14 05:22, , 4F
想不到 8+8+4 為什麼最後一個要補到 8
05/14 05:22, 4F

05/14 08:09, , 5F
64bit os 補到8byte 不意外
05/14 08:09, 5F

05/14 08:11, , 6F
沒事...XD 我看錯了
05/14 08:11, 6F
文章代碼(AID): #1A2mmGDK (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A2mmGDK (C_and_CPP)