我们在上一篇文章中已经初步了解了,alloc是如何分配内存等,结构体按最内存对齐,oc类是16字节对齐等内容。
-
影响对象内存的因素
对象⾥⾯存储了⼀个isa指针 + 成员变量的值,isa指针是固定的
,占8个字节
,所以影响对象内存的只有成员变量(属性会⾃动⽣成带下划线的成员变量)
我们验证看到,对象P并未赋值。但是p的内存占用了48字节(8+8+4+8+2+1=31 按8对齐40+isa8)
。
-
对象的内存分布
在对象的内部是以8字节进⾏对⻬的。 苹果会⾃动重成员变量的顺序,将占⽤不⾜ 8 字节的成员挨在⼀起,凑满 8 字节,以达到优化内 存的⽬的。(感觉像开了上帝视角)