在iOS开发的过程中,会创建很多的对象、变量、常量等,这些常量、变量根据位置的不同存储的内存也是不相同的,分为以下五种类型:
- 栈区(stack):这个区域又编译器进行创建销毁,默认大小有限制(不同平台大小不同)。主要是存储函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是为唯一的。存取速度快,效率高,且同一个栈内的数据是共享的,如创建了一个int a = 10;系统会在栈区寻找有没有10的内存地址有就直接赋值,没有再创建。随函数的创建创建,随函数的销毁销毁。
- 堆区(heap):主要是存储创建的对象以及数值数据。存储方便,灵活性高、动态分配。分配内存为系统会维护一个剩余内存的链表,需要用到内存时,系统会进行链表进行便利,提供不小于需求的内存空间,并会将多余的内存空间重新放在链表中。
- 全局区:进程中创建的全局变量以及静态变量会存储在该区域。
- 代码区:存储函数的二进制代码
- 文字常量区:存储字符串常量,进程启动创建,进程销毁销毁。