结构体的大小 内存对齐
Struct A
{
int a;
int b;
};
int main()
{
Printf(“%d\n”,sizeof(struct A));
共占8字节
Struct B
{
char a;//1+3(加上3成为4的倍数,虽浪费了3个字节,但速度更快)
int b;//4
};
共占8字节
Struct C
{
char a;//1+1(加上1为2的倍数)
short b;//2
int c;//4
}
共占8字节
Struct D
{
char a;//1+3(加上3为4的倍数)
int b;//4
int c;//4
double d;//8+4(所有字节加起来之和要为8的倍数,一共是20字节,并不是8的倍数因此在加上4为24,24是8的倍数,全部加起来要是最大的那一个的倍数才可)
}
共占24字节
Struct E
{
char a;//1+3(加上3为4的倍数)
int b;//4
short c;//2+2(原来字节之和为10,因为最大的为int类型,判断10不是4的倍数,因此在加两个字节即可)
}
共占内存10+2字节//考虑数组的内存
Struct E arr[2]
对比:
Struct G//不需要考虑对齐的应用
{
char a;//1
char x;//保留,不适用
short b;//2
int c;//4
}