情况:
输出结果:
STR: 8+4+4+1=17,同时要求4的倍数,为20。
STR1: 8+1+3+4=16,其中char后面填充了3个字节,因为int必须是4字节对齐,同时16已经为4的倍数。
STR2: 1+3+8+4=16,同上。
STR3: 1+3+8+4+1=17,通STR,结果为20。
一般在VC上结果不同,
VC按照具体的对齐,例如char, double,则一定是16,以double的8对齐,但是GCC中最大以4字节对齐,即使用了
也就是说,在GCC下pack命令只有小于等于4才生效。
同样也就有另一个问题,就是最终大小,在GCC中,要求是最大变量大小的整数倍,但是不超过4字节的倍数,但是VC中,是按照实际大小倍数。