pragma pack(n)與內存對其問題


title: pragma pack(n)與內存對其問題
date: 2016-06-08 15:32:11
categories: C++
tags:
- C
- C++
- 內存對齊
- pragma pack


作用:屏蔽掉編譯器爲變量設定的默認的對其方式,設定自己的對其方式

#pragma pack(n)表示設定變量以n字節對其。

  • 如果n大於等於該變量所佔的字節數,那麼偏移量必須滿足默認的對其方式
  • 如果n小於該變量的類型所佔用的字節數,那麼偏移量爲n 的整數倍,不用滿足默認的對其方式。

結構體的總大小也有個約束條件:
- 如果n大於所有的成員變量類型所佔用的字節數,那麼結構的總大小必須爲佔用空間最大的變量佔用的空間數的倍數
- 如果n小於所有成員變量類型所佔用的字節數,那麼必須爲n的倍數。

舉例說明:

#pragma pack(push)  //保持對齊狀態
#pragma pack(4) //設定爲4字節對齊

strust test
{
    char m1;
    double m4;
    int m3;
}

#pragma pack(pop)   //恢復對齊狀態
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章