内存大小计算
变量 a,占一个字节,从 0 开始,此时min(0,1),第 0 位存储 a
变量 b,占 8 个字节,min(1,8),不能被整除,向后推, 8-15 位放 b
变量 c,占 4 个字节...,min(16,4),16-19 位放 c
变量 d,占两个字节,min(20,2), 20-21 位放 dundefined因此MyStruct1 需要的内存大小为 21,而其中最大变量为 8 字节,...(0,8),0-7 位存储 b
变量c,占 4 字节,min(8,4), 8-11 位存储 c
变量d,占2字节,min(12,2),12-13 位存储 d
变量a,占1字节,min(14,1),14...));
打印结果如下
image.png
分析 MyStruct3 的内存计算
变量b,占 8 个字节,从 0 开始,此时 min(0,8),0-7 位存储 b
变量c,占 4 字节...,c2 的值时,发现是乱码,这是因为苹果针对 age&c1&c2 的属性内存进行了重排,age 占 4 字节,c1 和 c2 各占一个字节, 所以他们三个存储在同一块内存中age 的获取通过0x00000012c1