iOS内存分为:堆区、栈区、代码区、常量区、静态区。
1.堆区:
有程序员控制的区域,需要程序员主动申请、释放。如果程序员不释放,则程序结束时由系统收回。常用的对象alloc、new、malloc、realloc等命令申请的空间为堆区空间,对象通常保存在堆区,指向对象的指针通常在栈区。堆区的效率比栈区低,容量大,可控制性强。
2.栈区:
由编译器自动分配释放的内存空间,如局部变量、函数参数值等。速度快,效率高,不受程序员控制,容量比堆区小。
3.代码区:
用来存放函数二进制代码区域,只允许读操作。系统加载程序代码到内存。无需程序员操作。
4.常量区:
存放常量到区域,如常量字符串、常量整型、常量浮点型等数据,此区域数据由系统管理,无需程序员操作。
5.静态区:
静态区可分为初始化静态区和未初始化静态区,由系统管理,无需程序员操作。