在iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区
五大区域。如下图所示
下面分别介绍这五大区
栈区(Stack)
定义
-
栈是
系统数据结构
,其对应的进程或者线程是唯一
的 -
栈是
向低地址扩展
的数据结构 -
栈是一块
连续的内存区域
,遵循先进后出(FILO)
原则 -
栈的
地址空间
在iOS中是以0X7开头
-
栈区一般在
运行时分配
存储
栈区是由编译器自动分配并释放
的,主要用来存储
-
局部变量
-
函数的参数
,例如函数的隐藏参数(id self,SEL _cmd)
优缺点
-
优点:因为栈是由
编译器自动分配并释放
的,不会产生内存碎片,所以快速高效
-
缺点:栈的
内存大小有限制,数据不灵活
-
iOS主线程栈大小是1MB
-
其他线程是
512KB
-
MAC
只有8M
-
以上内存大小的说明,在Threading Pro