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