内存对齐
- 内存对齐是指:任意单个类型的数据都需要存放在能被它本身大小所能整除的地址上。
- 基本类型的大小,char(1),short(2),int(4) ,long(4),long long(8),float(4),double(8) ,指针(4/8)
预处理指令:#pragma pcak(1)
——内存以1对齐
内存对其的规则
- 前面的所有成员字节相加要能整除当前成员的字节数;
- 结构体最终的大小,一定能整除单个类型的大小。
注意
是==单个类型!!!!即基本数据类型。
示例
类型1
typedef struct A
{
char a;//1+3
int b;//4
}A;//8
typedef struct B
{
char a;//1+1
short b;//2
int c;//4
}B;//8
typedef struct C
{
char a;//1+3
int b;//4
short c;//2+2
int d;//4
}C;
typedef struct D
{
char a;//1+1
short b;//2
int c;//4
int d;//4
}D;//12
类型2
typedef struct E
{
int a;//4
char b;//1
}E;//5+3
类型3
注意之前提到:单个数据
,不需要结构体的最终大小能够整除d元素
struct HH
{
int a;
char b;
};//5+3
typedef struct H
{
char c;//1+3
struct HH d;//偏移8
}H;//12