關於堆區、棧區等五大區的終極分析

opooc發表於2018-01-15

這裡寫圖片描述
這裡寫圖片描述

  • 棧區

記憶體管理由系統控制,儲存的為 非靜態的區域性變數,例如:函式引數,在函式中生命的物件的指標等。
當系統的棧區大小不夠分配時, 系統會提示棧溢位。

  • 堆區

記憶體管理由程式控制,儲存的為malloc , new , alloc出來的物件。
如果程式沒有控制釋放,那麼在程式結束時,由系統釋放。但在程式執行過程中,會出現記憶體洩露、記憶體溢位問題。
分配方式 類似於連結串列。

  • 全域性儲存區
    全域性變數、靜態變數會儲存在此區域。事實上全域性變數也是靜態的,因此,也叫全域性靜態儲存區。
    儲存方式: 初始化的全域性變數跟靜態變數放在一片區域,未初始化的全域性變數與靜態變數放在相鄰的另一片區域。
    程式結束後由系統釋放。

  • 文字常量區
    在程式中使用的常量儲存在此區域。程式結束後,由系統釋放。
    在程式中使用的常量,都會到文字常量區獲取。

  • 程式程式碼區
    存放函式體的二進位制程式碼。
    執行程式就是執行程式碼,程式碼要執行就要載入進記憶體。

參考:
0、全域性變數、區域性變數、靜態全域性變數、靜態區域性變數在記憶體裡的區別

1、 詳解棧區、堆區、全域性區、文字常量區、程式程式碼區

2、 通過指標、陣列,講靜態儲存區、棧、堆的區別(轉載)/C
3、 棧、堆、全域性儲存區、文字常量區、程式程式碼區

相關文章