看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
yoco315:我知道 pack, 但是我很困惑他為什麼要去 padding float XD 05/14 04:39
yoco315:補充一下,我知道 alignment XD 但是我不懂他這邊幹嘛要al 05/14 05:22
yoco315:那個 int,int,int 的,最後一個都沒 padding... 05/14 05:22
yoco315:想不到 8+8+4 為什麼最後一個要補到 8 05/14 05:22
chrisdar:64bit os 補到8byte 不意外 05/14 08:09
chrisdar:沒事...XD 我看錯了 05/14 08:11