日常筆記(3):數據結構,字節對齊

如下:


struct s {
int i;
char ch;
};
 

通過 sizeof算出的大小爲 8 ,而實際是 : int 4個字節,char 一個字節,共5個字節。 爲什麼會是8個字節內,一般機器是以4個字節進行尋址,所以編譯器爲了讓程序跑得跟快,減少CPU讀取數據的指令週期,對結構體的存儲進行了優化。實際上第一個char型成員雖然本來只有1個字節,但實際上卻佔用掉了4個字節,爲的是讓第二個int型成員的地址能夠被4整除。因此實際佔用的是8個字節。

使用#pagram pack 進行字節對齊就可以瞭如

#pragma pack(1)
struct s {
int i;
char ch;
};
#pragma pack()

1字節對齊, 通過sizeof算出就是 5了

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