记住sizeof是一个运算符,而不是一个函数。
在Windows中,下面的结果都是显示为24个字节,这样可以表明在一个struct中,最终的字节数要是在结构体中的占最大字节数的整数倍,这也是内存对齐的要求。看下面这个例子:
代码
1
#include
<
iostream
>
2 using namespace std;
3
4 struct str {
5 char c;
6 int i;
7 float f;
8 double d;
9 };
10
11 struct gstr {
12 double d;
13 float f;
14 int i;
15 char c;
16 };
17
18 int main()
19 {
20 cout << sizeof (str) << endl;
21 cout << sizeof (gstr) << endl;
22
23 return 0 ;
24 }
2 using namespace std;
3
4 struct str {
5 char c;
6 int i;
7 float f;
8 double d;
9 };
10
11 struct gstr {
12 double d;
13 float f;
14 int i;
15 char c;
16 };
17
18 int main()
19 {
20 cout << sizeof (str) << endl;
21 cout << sizeof (gstr) << endl;
22
23 return 0 ;
24 }
而在Linux中,结果却显示为20个字节,这样是否可以表明编译器或者是操作系统对自己进行了一定的优化或者是不进行内存对齐,这样也并不一定,因为char是有进行对齐的。