C語言記憶體區概述

2021-10-03 20:23:07 字數 387 閱讀 9606

在c/c++中,記憶體分成5個區:堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。

棧:由編譯器在需要的時候分配,在不需要的時候就會自動清除的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。

堆:由new分配的記憶體塊,這些的釋放編譯器不會去管,由應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,那麼程式結束後,作業系統會自動**。

自由儲存區:由malloc等分配的記憶體塊,和堆是十分相似的,它是用free來結束生命週期。

全域性/靜態儲存區:全域性變數和靜態變數被分配到同一塊記憶體中,在以前的c語言中,全域性變數又分為初始化的和未初始化的,在c++裡面沒有這個區分,它們共同占用一塊記憶體區。

常量儲存區:這是一塊比較特殊的儲存區,裡面存放的是常量,不允許修改。

c語言記憶體四區( )

圖1 記憶體四區模型 流程說明 1 作業系統把物理硬碟 load到記憶體 2 作業系統把c 分成四個區 3 作業系統找到main函式入口執行 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方 式類似於資料結...

C語言記憶體四區

圖一 記憶體四區模型 流程說明 1 作業系統把物理硬碟 load到記憶體 2 作業系統把c 分成四個區 3 作業系統找到main函式入口執行 一 記憶體四區 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方...

C語言記憶體四區

1 棧區 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。2 堆區 一般由程式設計師分配並釋放,若程式設計師不釋放,程式結束時可能由作業系統 3 資料區 主要包括靜態全域性區和常量區。4 區 存放函式體的二進位制 分清楚變數的記憶體處於哪個區對於程式設計至關重要。乙個典型的,卻比較晦澀的例...