→ yearnway:我想應該是前兩個int各佔4,後兩個char各1,可是struct 08/20 17:06
→ yearnway:會自動把大小補成4的倍數~~所以一共12bytes 08/20 17:07
→ adrianshum:google struct alignment. 樓上: 不止是補成倍數吧 08/20 17:13
→ adrianshum:我記得 alignment 是連中間也會有空了位置 08/20 17:14
推 VictorTom:沒記錯的話, struct尾的alignment是會對齊struct中size 08/20 18:32
→ VictorTom:最大的那個, 也就是如果例子裡有個double, 應該會發現它 08/20 18:32
→ VictorTom:align為8的倍數; struct中間的話, 記得是align到接著的 08/20 18:40
→ VictorTom:這個type, 也就是假設有個member是short s;那s會align到 08/20 18:41
→ VictorTom:2的倍數. 以上, 純粹就印象說的....@_@" 08/20 18:41
→ VictorTom:PS. alignment可以設定關掉....:) 08/20 18:43
→ akasan:幫補充一下 要怎麼align是看compiler實作 08/20 20:17
→ johnhmj:packet* cmd = (packet*) malloc(...); 08/20 20:18
推 VictorTom:也對, VC也能硬設對齊多少, 忘了寫清楚....Orz 08/20 20:19
→ johnhmj:用visual studio IDE 的除錯監看視窗查看結構。 08/20 20:22
→ su31o4gj83:原來如此啊, 謝謝各位的回覆 08/20 21:04