OC中程序的内存分布&类加载
类加载:一句话形容就是在类第一次使用时加载到代码段,直到程序结束时才释放。
OC中的内存分布
从下往上依次是:
代码段:存放代码
数据段:已初始化全局变量和静态变量
BSS段:未初始化的全局变量和静态变量
堆区:new malloc 等分配的空间
栈区:局部变量
假设在main函数中声明
假设Person拥有NSString *name 和 方法add
Person *p1 = [Person new]
首先p1是一个局部变量 ,存放在栈区,同时p1是一个指针,指向对象p1的地址(此对象存放在堆区)
那么在堆区包含哪些内容呢?
堆区存放类类所拥有的变量,在这也就是*name,还有一个isa指针
isa指针指向什么呢? 函数不放在堆区那又放在哪呢?
isa指向Person类在代码段中的位置,函数也就放在代码段
下面看一张图
当初的梦想实现了吗,事到如今只好放弃吗~