1、什么是内存对齐
计算机系统对基本类型数据在内存中放的位置做了限制,它们会要求这些数的首地址是一个数(一般为4和8)的整数倍,我们看下结构体的大小 
 
#include <stdio.h>
struct A
{char a;int b;
};int main()
{printf("size of struct A is %d\n", sizeof(struct A));return 0;
}
结果:
1111deMacBook-Pro:digui a1111$ ./sizeof
size of struct A is 8结果是8,不是5,是由于内存对齐导致
1:a 
 
2 
 
3 
 
4 
 
5:b 
 
6 
 
7 
 
8 
 
 2、为什么要内存对齐
 
 牺牲了空间,加快cpu寻址速度,加快读取内存数据速度。 
 
内存是以字节为单位,但处理器不是以字节块来存取,一般用双字节,四字节,8字节,16字节,或者32