嵌套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) <