栈区、堆区、全局区、常量区、代码区
栈区
栈区由编译器自动分配和释放,存放函数参数值、局部变量。
栈是系统数据结构,对应线程/进程是唯一的。
优点: 快速高效
缺点: 有限制,数据不灵活
堆区
由alloc、new创建的对象所分配的内存块,即程序员负责分配(alloc、new)和释放(release);MRC下,一个new就需要对应一个release,谁创建谁释放,谁引用,谁管理;ARC下,编译器会在合适位置给OC对象添加release操作,会在当前线程runloop退出或休眠时销毁这些对象。
优点: 灵活方便,数据适应面广泛
缺点: 效率有一定降低
全局/静态区
全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量存放在同一块区域,未初始化的全局变量和静态变量在相邻的另一块区域,程序结束后由系统释放
常量区
存放的是常量,不允许修改,程序结束后由系统释放
代码区
存放函数的二进制代码,程序结束后由系统释放
网友评论