IOS中記憶體的分配

2021-07-05 11:33:30 字數 688 閱讀 5595

記憶體分割槽:

1)、棧區

(stack)— 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。

2)、堆區

(heap) — 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os** 。(ios中alloc都是存放在堆中)

3)、全域性區

(靜態區)(static)—,全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。 - 程式結束後有系統釋放。注意:全域性區又可分為未初始化全域性區:bss段和初始化全域性區:data段。

4)、常量區

—常量字串就是放在這裡的。 程式結束後由系統釋放

5)、**區

—存放函式體的二進位制**。

bss段註解:

可執行程式包括bss段、資料段、**段(也稱文字段)。

bss(block started by symbol)通常是指用來存放程式中未初始化的全域性變數和靜態變數的一塊記憶體區域。特點是:可讀寫的,在程式執行之前bss段會自動清0。所以,未初始的全域性變數在程式執行之前已經成0了。

資料段包括初始化的資料和未初始化的資料(bss)兩部分[1] 。bss段存放的是未初始化的全域性變數和靜態變數。

unix下可使用size命令檢視可執行檔案的段大小資訊。如size a.out。

ios記憶體分配

記憶體分割槽 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os ios中alloc都是存放在堆中 3 全域性區 靜態區 static 全域性變數和靜態...

iOS記憶體分配

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

iOS 中記憶體分配與分割槽

ram與rom就是具體的儲存空間,統稱為儲存器 rom read only memory 儲存性記憶體,可以掉電儲存,例如sd卡 flash 機械磁碟也可以簡單的理解為rom 用的多的 nandflash,還有norflash,現在用的已經比較少了 兩者主要區別是前者空間大,便宜,後者可以直接執行程...