作者vito0302 (選擇!!)
看板C_and_CPP
標題[問題] 請問一個關於結構大小的問題
時間Mon Apr 20 12:59:32 2009
請問一下一個Struct大小的問題,第一個Struct如下面宣告
先宣告char,再宣告int,最後宣告double,得出的大小為16
這感覺比較沒問題。
但如果像struct2這樣宣告,只是把某個char的宣告放到int之下
則得出大小為24,請問這二者的作法有什麼差別嗎?
Struct 1 Struct 2
struct newtype { struct newtype {
char t; char t;
char tt; char tt;
char tttt;
int ttt;
int ttt; char tttt;
double b; double b;
}abc; }abc;
cout<<sizeof(abc); cout<<sizeof(abc);
輸出結果為 16 輸出結果為 24
了解了,謝謝回應
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.158.148
※ 編輯: vito0302 來自: 203.70.158.148 (04/20 13:00)
※ 編輯: vito0302 來自: 203.70.158.148 (04/20 13:00)
推 littleshan:請 google 找 data structure alignment 04/20 13:01
推 VictorTom:compiler替struct member做data alignment的結果.... 04/20 13:02
→ VictorTom:如果St 1您認為16是合理的, 那St 2應該算得出24才對:) 04/20 13:03
→ VictorTom:喵的, 為什麼小弟的推文總是會慢人家半拍呢....>_<# 04/20 13:04
→ ledia:慈(遲)來大師你好 XD 04/20 13:20
※ 編輯: vito0302 來自: 203.70.158.148 (04/20 13:38)
※ 編輯: vito0302 來自: 203.70.158.148 (04/20 14:01)
→ VictorTom:汪>_<# 其實因為我是Debug版的所以才會慢一點....Q_Q~ 04/20 14:02