在C 中,記憶體分成5個區

2021-04-29 16:32:47 字數 441 閱讀 9835

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

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

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

自由儲存區,就是那些由malloc等分配的記憶體塊,他和堆是十分相似的,不過它是用free來結束自己的生命的。

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

常量儲存區,這是一塊比較特殊的儲存區,他們裡面存放的是常量,不允許修改(當然,你要通過非正當手段也可以修改,而且方法很多

C 複習筆記(四) 5個記憶體區

c 中,程式所占用的記憶體分為以下 1 棧stack 由編譯器自動分配和釋放,主要存放區域性變數及函式引數 void main 2 堆heap 由程式設計師分配和釋放的動態記憶體,若在程式結束時被申請的記憶體未被手動釋放,則由編譯器自行 malloc函式所申請的記憶體就是位於堆,由free釋放 vo...

c 中記憶體的四個區

在c 中,記憶體被劃分為四個區。區 靜態儲存區 堆和棧。1.區。顧名思義,存放程式 2.靜態儲存區。將程式中的靜態變數 全域性變數存放在此區域 3.堆。程式中,由程式設計師申請的記憶體空間 new malloc 空間的釋放一般也有程式設計師控制 乙個new對應乙個delete 當程式設計師沒有釋放該...

C 中5個記憶體區的區別以及棧和堆的詳細比較

1 在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。1 棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清除的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。2 堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制...