系统内存分区从上到下分别是:栈、堆、全局区(静态区)、常量区、代码区
栈(stack):函数中定义变量存储在栈中,当调用函数时候函数中定义的变量会被添加到栈中,当函数调用结束的时候,所有被添加的变量都会移除栈在最高的地址上,所以添加的变量地址会逐渐变小。
堆(heap):Object-C(或者面向对象语言)中通过类创建对象就放在这里它是一块动态内存,当程序运行时候动态分配给变量,它可以长时间存在。
全局(globals):定义函数外边的全局变量就放在这个里面,这里的变量在程序启动就被创建,你可以自由的更改它们。
常量区(constants):常量在系统一运行被创建,常量区的内存是只读的。如常量字符串就放在这个区。你可以读它们但是不可以修改它们。
代码区(code):代码区是只读的,该区域是用来存放程序的代码。