作者MasterChang (我愛ASM)
看板C_and_CPP
標題Re: [問題] struct alignment 的問題
時間Thu May 14 02:06:05 2009
※ 引述《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