自定义的结构的内存问题-字节对齐

发布时间 2023-11-26 17:05:38作者: 别抢我的零食

字节对齐

在写结构体时养成习惯,一定要按内存从小到大写,要不然在创建结构体的时候会导致创建的结构体明显的大。因为每创建一个结构体时,内存都需要对齐。
一般都是1,4,8的整数倍

//字符对齐时,字符可以和整数在一起,字符数组可以任意拆分。




struct A{
	char a; 	//1+3
	int b;  	//4
	double c;	//8
};
//原本sizeof(A) = 13,但是因为要字节对齐,char类型和int类型的合起来需要8个字节,所以sizeof(A) = 16
struct B{
	int a;		//4+4
	double b;	//8+0
	char c;		//1+7
};
//sizeof(B) = 24

结构体类型的对齐只需要把嵌套的结构体的类型移下来。