首先我们得明白,什么是字节对齐?
在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列。
然后我们还得懂得,为什么需要字节对齐?
其实,字节对齐是空间与时间的博弈,为了效率的考虑,不得不采取空间换时间的策略,利用空间占位,造成了数据在地址上的对齐,这个时候就达到了访问数据只需要一次读入即可。
字节对齐计算的四个概念
1、基本数据类型的自身对齐值:
char类型: 1字节
short类型: 2字节
int、float类型: 4字节
double类型: 8字节
2、程序的指定对齐值:
即#pragma pack(value)时的指定对齐值value
3、自定义类型的自身对齐值:
即结构体或类的成员自身对齐最大的值
4、自定义类型的有效对齐值:
自定义类型的自身对齐值和指定对齐中较小的值
掌握了这些就可以初步认识字节对齐了。