这可能与结构体中成员变量的数据类型有关,short\char可以看做整型数据,float\double是实数型数据,整型和实型不能一起吧,换句话说整型数和实型数不能放在一起来满足对齐问题。
请看下面这两个:
- struct A {
- short a; // 2
- char c; // 1
- float f; // 4
- float d; // 4
- };
- struct A aa;
- printf("%ld", sizeof(aa));
复制代码
它的结果是12。对齐模数是4,a,c一组,f一组,d一组,结果12。
- struct A {
- short a; // 2
- float d; // 4
- char c; // 1
- float f; // 4
- };
- struct A aa;
- printf("%ld", sizeof(aa));
复制代码
它的结果是16。对齐模数是4,a一组,b一组,c一组,d一组,结果16。 |