2020-09-05 oc对象alloc的作用

2020-09-06  本文已影响0人  蓝胖子的梦

众所周知,alloc是分配一个对象的内存空间。

我们创建代码一个对象Person*p1 = [[Person alloc]init];通过objc781源码断点窥探alloc流程,alloc会通过一系列函数调用。如下图

1、调用instanceSize,计算对象需要的内存空间大小,此内存空间大小在苹果64位系统下,会采用16字节对齐方式,即算法:x+size_t(15)&~size_t(15),算出来的内存大小永远是16字节的倍数;x值受对象属性的影响,即对象属性越多,x值越大,内存需要就越大。ps:属性的类型也会影响x值,NString、NSInteger占8字节,int占4字节,short int 占2字节

2、调用calloc,向系统开辟内存空间,并返回地址指针。

3、initInstanceIsa,将地址指针关联相应的类。

alloc流程图

NSObject*objc1 = [[NSObjectalloc]init];

NSObject 只有一个isa指针,只要需要的内存空间是8字节,16字节对齐后实际返回的内存空间为16字节

上一篇 下一篇

猜你喜欢

热点阅读