浅谈iOS堆和栈
2022-05-30 本文已影响0人
萤火驻守心间
按管理方式分:
1、对于栈来讲,是由系统编译器自动管理,不需要程序员手动管理。
2、对于堆来讲,释放工作由程序员手动管理,不及时回收容易产生内存泄露。
按内存分配:
一、栈区
1、栈区的内存地址是从高到低的分配
2、栈区存放局部变量,先进后出,一旦出了作用域就会被销毁
二、堆区
1、堆区的内存地址是从低到高分配
2、堆区的变量空间分配都是alloc,程序员需要管理堆区的内存
3、ARC的内存管理,是在编辑器编译的时候,自动添加retain等,c的变量的内存管理,需要程序员处理
4、堆区的内存分配由系统来负责
5、系统使用一个链表来维护所有已经分配过的内容空间