1.什么是字节对齐
现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序一个接一个地存放,这就是对齐。
简单来说,就是结构体在计算sizeof的时候,不能简单的把里面的数据类型的大小加起来,还要考虑很多。
2,为什么字节对齐
假如我的结构体中有两个变量 char a,int j
如果没有字节对齐
a | j | j | j | j |
每次cpu读取4个字节
第一次读取
a | j | j | j |
想要知道 a 的值,但是这次读了四个字节,就要把后面三个属于 j 的字节去掉
第二次读取
j |