这与
alignment有关.任何特定类型(字节,整数,
等)只能从其标准尺寸的倍数的偏移开始.
>字节串s可以从任何偏移量开始,因为它的标准大小为1.
>但是32位整数我只能以4的倍数偏移量开始
(它的大小).例如,0,4,8,12等
因此,要分析struct 10siii,我们首先剖析10字节字符串.
Offset: 0 1 2 3 4 5 6 7 8 9
s----------------->
10s占用了预期的前10个字节.现在
以下3个整数.
1 1 1 1 1 1 1 1 1 1 2 2 2 2
Offset: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
s-----------------> x x i-----> i-----> i----->
每个整数跨越4个字节,但每个整数只能以a的偏移量开始4的倍数(即8,12,16,20,而不是10).由于起始字节字符串占用10个字节,因此必须如此填充2个字节以允许整数处于适当的偏移量.因此,您最终得到的总结构大小包括:10(开始字节字符串)2(填充)12(3个整数)= 24字节结构.