問個(gè)Struct的對(duì)齊問題?
聽了半天結(jié)構(gòu)體的對(duì)齊方式,感覺還是沒聽懂。請(qǐng)問下面的例子是怎么計(jì)算出來的呀?
//st1類型占8字節(jié)
struct st1{
? ? int a;
? ? short b;
? ? char c;
};
//st2類型的占12字節(jié) 調(diào)了st1數(shù)據(jù)成員的次序
struct st2{
? ? char a;
? ? int b;
? ? short c;
};
//st3類型的占16字節(jié) 不論如何調(diào)序結(jié)果都是16字節(jié)
struct st3{
? ? int a;
? ? char b;
? ? double c;
};
另外,聽說GCC和標(biāo)準(zhǔn)C在對(duì)齊方面有所區(qū)別,請(qǐng)問又是怎么回事呢?
2015-08-30
標(biāo)準(zhǔn)對(duì)此沒有規(guī)定,完全由編譯器自己實(shí)現(xiàn)。自己寫代碼時(shí)不要依賴這種“未指定”的行為。
想要知道你使用的編譯器是怎樣實(shí)現(xiàn)的,就用gdb打印出數(shù)據(jù)結(jié)構(gòu)看一下吧。
2017-07-02
st3占用的是16?我手動(dòng)計(jì)算是12啊,請(qǐng)指教