iOS结构体内存分配方式探究

iOS结构体内存大小分配遵循以下几条原则:
*结构体大小是其内部变量中最大内存变量的整数倍
*结构体内部变量的属性的起始内存地址是其本身大小的整数倍
*结构体中如果有其他结构体,那么内部的结构体变量会被放在起始位置

例子1:


截屏2020-10-27 13.19.56.png

内存布局分析
内存最大的变量为a 8字节,所以最终内存大小是8的整数倍
内存布局模拟
a 8 0-7 0是8的倍数,所以0可以作为存储位
b 2 8-9 8是2的倍数,所以8可以作为存储位
c 4 .. (12-15) 9不是4的倍数,所以c实际是从12开始存储
d 2 16-17 16是2的倍数,所以16可以作为存储位
最终得到的实际存储位为0-17,总共18位,按照内存对齐原则,最终大小为3x8 = 24
例子2:


截屏2020-10-27 13.35.08.png

本例中包含了一个结构体,通过测试发现结构体属性在起始位置,内存布局如上

具体内存大小可通过sizeOf()方法验证,本文章是对自己学习过程的一个验证和记录,如果有不正确的地方,欢迎指正哦

你可能感兴趣的:(iOS结构体内存分配方式探究)