存储区域

2021-03-24  本文已影响0人  QYCD

栈区、堆区、全局区、常量区、代码区

栈区

栈区由编译器自动分配和释放,存放函数参数值、局部变量。
栈是系统数据结构,对应线程/进程是唯一的。
优点: 快速高效
缺点: 有限制,数据不灵活

堆区

由alloc、new创建的对象所分配的内存块,即程序员负责分配(alloc、new)和释放(release);MRC下,一个new就需要对应一个release,谁创建谁释放,谁引用,谁管理;ARC下,编译器会在合适位置给OC对象添加release操作,会在当前线程runloop退出或休眠时销毁这些对象。
优点: 灵活方便,数据适应面广泛
缺点: 效率有一定降低

全局/静态区

全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量存放在同一块区域,未初始化的全局变量和静态变量在相邻的另一块区域,程序结束后由系统释放

常量区

存放的是常量,不允许修改,程序结束后由系统释放

代码区

存放函数的二进制代码,程序结束后由系统释放

参考:
iOS-MRC与ARC区别以及五大内存区
iOS系统中的几大内存区域

上一篇下一篇

猜你喜欢

热点阅读