栈里面存放非对象的基本数据类型
堆中存放对象数据类型
栈中的内存会被系统回收,堆中内存需要手动释放
堆是动态分配,没有静态分配的堆
栈分动态分配和静态分配
静态分配如局部变量
动态分配类似于alloc
为了访问堆(heap)中的数据,至少要有一个保存在stack中的指针
Stack是低位扩展,一般不超过1MB,越用越少
Heap是高位扩展,内存取决于虚拟内存,越用内存越大
Stack是哪个创建的就是哪个的,没有引用计数器概念,如局部变量
Heap对象才会采用引用计数方式管理
当栈的剩余空间小于申请的空间就会发生栈溢出,队列
Heap是链表存储
****************************
类似于nsstring,nsarray 的不可变对象都是存入栈中的,即申请空间固定
nsmutablestring之类的是可变对象,是存放在堆的
****************************
个人理解:在函数中alloc一个对象,那么该对象的引用在栈中,内存在堆中
网友评论