目录
1.结构体大小
结构体的大小遵循内存对齐的原则,总的字节数一定要是单个类型最大字节数的倍数。
举个例子
struct str
{
char a;//1,不是4的倍数 所以1+3
int b;//4
};//8个字节
strct A
{
char a; //1
char b[15]; //15
int c; //4
}; //类型占最大字节数是int ->4个字节 上面加起来20 是4的倍数 所以是20
但是看下面的代码在多加一行会有所不同。
#pragma pack(1) //加了此句 该局的作用是修改对齐方式
struct str
{
char a;//1,
int b;//4
};//5个字节
上面str 就站了5个字节
str一共8个字节,是为了内存对齐
struct B
{
char a;//1 不是2的倍数 所以1+1
short b;//2 2加上前面的两个字节刚好是4的倍数,不用加
int c;//
}; //B一共8个字节
struct C
{
int a;//4个字节
char b;//1个字节
}; 一共5个字节,不符合4的倍数,所以次数+3一共8个字节