C++sizeof使用规则及陷阱分析(4)

2014-11-18 22:04:06 · 作者: · 浏览: 33

  嵌套struct类定义中的sizeof


  这里有个陷阱,对于结构体中的结构体成员,不要认为它的对齐方式就是他的大小,看下面的例子:


  1 struct s1


  2 {


  3 char a[8];


  4 };


  5


  6 struct s2


  7 {


  8 double d;


  9 };


  10


  11 struct s3


  12 {


  13 s1 s;


  14 char a;


  15 };


  16


  17 struct s4 //s1为1对齐,大小为8


  18 {


  19


  20 s1 s;


  21 double d;


  22 };


  23


  24 struct s5


  25 {


  26 s2 s;


  27 char a;


  28 };


  29


  30


  31


  32 cout << sizeof(s1) << endl; // 8


  33 cout << sizeof(s2) << endl; // 8


  34 cout << sizeof(s3) << endl; // 9


  35 cout << sizeof(s4) << endl; // 16


  36 cout << sizeof(s5) <