字節對齊的基本規則

字節對齊的細節和編譯器實現相關,但一般而言,滿足三個準則:
  1) 結構體變量的首地址能夠被其最寬基本類型成員的大小所整除;
  2) 結構體每個成員相對於結構體首地址的偏移量(offset)都是成員大小的整數倍,如有需要編譯器會在成員之間加上填充字節(internal adding);
  3) 結構體的總大小爲結構體最寬基本類型成員大小的整數倍,如有需要編譯器會在最末一個成員之後加上填充字節(trailing padding)。

 

建議如果沒有把握,在定義結構時就用:

#pragma pack(1)

typedef struct ...

{

    ...;

    ...;

} ...;

#pragma pack()

 

顯示指定一下就比較保險了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章