系统类信息在虚拟内存中的位置

200 阅读1分钟

我们都知道:

  • OC中实例对象的isa指向类对象, 类对象的isa指向元类对象, 几乎所有的类都直接或间接的继承自NSObject类, 经典的方法查找就是沿着这几条路线

  • 类信息在内存中应该只存在一份, 所以猜测在数据段

  • 获取类信息可以通过class方法和object_getClass()方法, 在可执行文件或共享库中查找原始地址信息可以通过lldb的image相关指令

测试自定义类和系统类

模拟器下:

WechatIMG3843.png

真机下:

WechatIMG3844.png

自定义的类信息应该是在数据段, 而系统类信息的位置竟然比栈区还要高, 这个有点意思

用lldb的image指令调试下

WechatIMG3845.png

WechatIMG3846.png

WechatIMG3848.png

WechatIMG3850.png

系统动态库在进程中的映射地址在栈区之上