内存对齐

参考地址:http://baike.baidu.com/view/4786260.htm

分析过程:
  1) 成员数据对齐
  #pragma pack(4)  //gcc 默认为4 
  struct test_t {
  int a; /* int型,长度4 = 4 按4对齐;起始offset=0 0%4=0;存放位置区间[0,3] */
  char b; /* char型,长度1 < 4 按1对齐;起始offset=4 4%1=0;存放位置区间[4] */
  short c; /*short型, 长度2 < 4 按2对齐;起始offset=6 6%2=0;存放位置区间[6,7] */
  char d[6]; /* char型,长度1 < 4 按1对齐;起始offset=8 8%1=0;存放位置区间[8,D] */
  };
    成员总大小=15

  2) 整体对齐
  整体对齐系数 = min((max(int,short,char), 4) = 4
  整体大小(size)=$(成员总大小) 按 $(整体对齐系数) 圆整 = 16 /*16%4=0*/

      因此最终大小为 16

参考

     

struct test
{
int a;
char b;
short c;
char d[6];
};   
sizeof(fuck) = 16
 

原文地址:https://www.cnblogs.com/wangkangluo1/p/2399546.html