OC中堆栈详解

栈里面存放非对象的基本数据类型

堆中存放对象数据类型

栈中的内存会被系统回收,堆中内存需要手动释放

堆是动态分配,没有静态分配的堆

栈分动态分配和静态分配

静态分配如局部变量

动态分配类似于alloc

为了访问堆(heap)中的数据,至少要有一个保存在stack中的指针

Stack是低位扩展,一般不超过1MB,越用越少

Heap是高位扩展,内存取决于虚拟内存,越用内存越大

Stack是哪个创建的就是哪个的,没有引用计数器概念,如局部变量

Heap对象才会采用引用计数方式管理

当栈的剩余空间小于申请的空间就会发生栈溢出,队列

Heap是链表存储

****************************

类似于nsstring,nsarray 的不可变对象都是存入栈中的,即申请空间固定

nsmutablestring之类的是可变对象,是存放在堆的

****************************

个人理解:在函数中alloc一个对象,那么该对象的引用在栈中,内存在堆中

你可能感兴趣的:(OC中堆栈详解)