iOS 内存的几大区域
2018-12-10 本文已影响11人
ChancePro
- 栈区(stack)
栈区由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。优点是快速高效,缺点是有限制,数据不灵活。先进先出。
局部变量和方法调用的实参都是保存在栈区的。 - 堆区(heap)
堆区由程序员分配和释放,如果程序员不释放,程序结束时,可能会由操作系统回收,比如 iOS 中 alloc 都是存放在堆中的。优点是灵活方便,数据适应面广泛,但是效率有一定降低。 - 全局区(静态区)(static)
全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量存放在一块区域,未初始化的全局变量和静态变量在相邻的另一颗区域,程序结束后由系统释放。 - 文字常量区
文字常量区存放常量字符串,程序结束后由系统释放。 - 代码区
代码区存放函数的二进制代码。程序编译链接后的二进制可执行代码。