系統內存分區從上到下分別是:棧、堆、全局區(靜態區)、常量區、代碼區函數
棧(stack):函數中定義變量存儲在棧中,當調用函數時候函數中定義的變量會被添加到棧中,當函數調用結束的時候,全部被添加的變量都會移除棧在最高的地址上,因此添加的變量地址會逐漸變小。code
堆(heap):Object-C(或者面嚮對象語言)中經過類建立對象就放在這裏它是一塊動態內存,當程序運行時候動態分配給變量,它能夠長時間存在。對象
全局(globals):定義函數外邊的全局變量就放在這個裏面,這裏的變量在程序啓動就被建立,你能夠自由的更改它們。內存
常量區(constants):常量在系統一運行被建立,常量區的內存是隻讀的。如常量字符串就放在這個區。你能夠讀它們可是不能夠修改它們。字符串
代碼區(code):代碼區是隻讀的,該區域是用來存放程序的代碼。變量