1. 程式人生 > >iOS開發中記憶體的分配

iOS開發中記憶體的分配

在iOS開發的過程中,會建立很多的物件、變數、常量等,這些常量、變數根據位置的不同儲存的記憶體也是不相同的,分為以下五種型別:

  • 棧區(stack):這個區域又編譯器進行建立銷燬,預設大小有限制(不同平臺大小不同)。主要是儲存函式的引數值,區域性變數等。棧是系統資料結構,對應執行緒/程序是為唯一的。存取速度快,效率高,且同一個棧內的資料是共享的,如建立了一個int a = 10;系統會在棧區尋找有沒有10的記憶體地址有就直接賦值,沒有再建立。隨函式的建立建立,隨函式的銷燬銷燬。
  • 堆區(heap):主要是儲存建立的物件以及數值資料。儲存方便,靈活性高、動態分配。分配記憶體為系統會維護一個剩餘記憶體的連結串列,需要用到記憶體時,系統會進行連結串列進行便利,提供不小於需求的記憶體空間,並會將多餘的記憶體空間重新放在連結串列中。
  • 全域性區:程序中建立的全域性變數以及靜態變數會儲存在該區域。
  • 程式碼區:儲存函式的二進位制程式碼
  • 文字常量區:儲存字串常量,程序啟動建立,程序銷燬銷燬。