iOS底层原理-1.alloc&init探索

172 阅读1分钟

1.首先来打印看下,alloc开辟了一块堆内存空间(0x6000028d83a0)存放三个对象p1(0x7ffeea36a0e8)、p2(0x7ffeea36a0e0)、p3(0x7ffeea36a0d8)在栈内存空间(p1先入栈依次是p2、p3压栈,由栈底(fp寄存器)到栈顶(sp寄存器)(高地址->低地址)) image.png

image.png 2.接下来我们按三种方法来探索

(1)添加符号断点objc_alloc 进入libobjc.A.dylib`objc_alloc:

image.png

(2)通过汇编跟流程 Debug->Debug WorkFlow->Always Show Disassembly 显示反汇编

image.png

image.png

(3)通过已知符号alloc添加符号断点

image.png

3.下面是通过跑objc4-818源码绘出的流程图及结果

alloc源码流程图.png

image.png

image.png