日常笔记(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了

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