OC中程序的内存分布&类加载

  类加载:一句话形容就是在类第一次使用时加载到代码段,直到程序结束时才释放。

  OC中的内存分布

    从下往上依次是:

        代码段:存放代码

        数据段:已初始化全局变量和静态变量

        BSS段:未初始化的全局变量和静态变量

        堆区:new malloc 等分配的空间

        栈区:局部变量

    假设在main函数中声明
      假设Person拥有NSString *name 和 方法add

      Person *p1 = [Person new]

      首先p1是一个局部变量 ,存放在栈区,同时p1是一个指针,指向对象p1的地址(此对象存放在堆区)

      那么在堆区包含哪些内容呢? 

        堆区存放类类所拥有的变量,在这也就是*name,还有一个isa指针

      isa指针指向什么呢? 函数不放在堆区那又放在哪呢?

        isa指向Person类在代码段中的位置,函数也就放在代码段

      下面看一张图

      

原文地址:https://www.cnblogs.com/caijiaming/p/13811488.html