OC 記憶體管理 記憶體5大區域

2021-08-21 07:24:21 字數 509 閱讀 3074

棧區域: 系統自動分配. 儲存區域性變數 如:int num=10, int* p=&num。 num 與 p 都儲存在棧區域

堆區域: 允許程式設計師手動的從堆申請空間來使用,要主動釋放。除非程式結束 如:int 4, float 4…. malloc,calloc …

bss段區域: 儲存未初始化的全域性變數/靜態變數,因程式執行時其全域性/靜態變數都沒有初始化

資料段/常量區:儲存已初始化的全域性變數/靜態變數,與常量資料, 在main 外定義的變數

**段區域: 儲存程式**/指令

申請效率的比較:

棧由系統自動分配,速度較快。但程式設計師是無法控制的。

堆是由new分配的記憶體,一般速度比較慢,而且容易產生記憶體碎片,不過用起來最方便.

棧: 元素有先進後出順序的線性結構。可以考慮疊盤子,只能從最上面拿盤子,也只能往最上面放盤子。那這個盤子序列、包括上面兩條規則就構成了乙個棧

堆: 滿足一定限制的樹型結構(比如父親節點的權值要大於兒子節點的權值,左兒子又要大於右兒子)。

記憶體的5大區域介紹

1.棧區 stack 是由 編譯器 自動分配並釋放,存放函式的 引數值 區域性變數等。棧是 系統 資料結構,對應的 執行緒 程序 是唯一的。優點是快速高效,缺點是資料不靈活 先進先出 棧空間 靜態分配 動態分配。靜態分配 由編譯器完成的,比如自動變數 auto 的分配。動態分配 由alloc函式完成...

iOS 記憶體的幾大區域

棧區 stack 由編譯器管理 分配釋放 存放函式引數值 區域性變數的值 函式中的基本資料型別 棧區的操作方式類似資料結構中的棧 先進後出 堆區 heap 由程式設計師管理 分配釋放 若程式設計師不釋放,程式結束時可能由系統 os 存放程式設計師new出來的物件。堆的操作方式與資料結構中的堆不同,操...

Oc 記憶體管理

1 對你自己擁有的物件負責,你只能釋放你擁有的物件 2 凡是你通過 retain alloc copy等手段獲得了所有者的物件,都必須在你不使用的時候來呼叫release autorelease等手段來釋放對他的所有權 3 在一定的 段內,對同乙個物件所作的copy alloc retain的操作次...