结构体的大小 内存对齐

结构体的大小 内存对齐

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(加上12的倍数)

   short b;//2

   int c;//4

}

共占8字节

Struct D

{

   char a;//1+3(加上34的倍数)

   int b;//4

   int c;//4

   double d;//8+4(所有字节加起来之和要为8的倍数,一共是20字节,并不是8的倍数因此在加上424248的倍数,全部加起来要是最大的那一个的倍数才可)

}

共占24字节

 Struct E

{

   char a;//1+3(加上34的倍数)

   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

}

猜你喜欢

转载自blog.csdn.net/xiaobaibai915/article/details/80232696