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()方法验证,本文章是对自己学习过程的一个验证和记录,如果有不正确的地方,欢迎指正哦

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容