乙個由c/c++編譯的程式占用的記憶體分為以下幾個部分
1、棧區(stack)— 由
編譯器自動分配釋放 ,存放函式的引數名,
區域性變數
的名等。其操作方式類似於資料結構中的棧。
2、堆區(heap)— 由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os**。注意它與資料結構中的堆是兩回事,分配方式倒是類似於
鍊錶。3、靜態區(static)—
全域性變數
和區域性靜態變數
的儲存是放在一塊的。程式結束後由系統釋放。
4、文字常量區—常量字串就是放在這裡的,程式結束後由系統釋放 。
5、程式**區— 存放
函式體的 二進位制**
。
程式占用記憶體分析
堆與棧有什麼區別?一 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由o...
程式記憶體分布
乙個完整的程式,在記憶體分布中的分布情況如下 1 區 2 全域性資料區 3 堆區 4 棧區 一般程式的由new產生的動態資料存放到堆區,堆用於儲存哪些生存期與函式無關的資料,函式內部的自動變數存放在棧區,區域性變數和函式引數存放在棧區。自動變數一般會隨著函式的退出而釋放空間,靜態資料 即使是函式內部...
C C 程式占用記憶體分析
首先感謝下原作者,寫的真的非常明白,非常詳細 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os ...