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