這是因為編譯時存在字節對齊的原因,字節對齊主要是為了提高內存數據讀取速度。如果你想要讓結果等於實際大小,你可以設置字節對齊大小如
#pragma pack(1)
取消設置
#pragma pack()
字節對齊的規則如下:
結構體的大小等於其最大成員的整數倍
結構體成員的首地址相對於結構體首地址的偏移量是其類型大小的整數倍。
比如double型成員的首地址相對於結構體首地址的偏移量應該是8的倍數
滿足前兩條規則後,編譯器會在結構體成員之後進行字節填充。