堆,棧,靜態儲存區和常量儲存區

2021-07-11 03:27:14 字數 645 閱讀 8949

在c++中,記憶體分成4個區,他們分別是堆,棧,靜態儲存區和常量儲存區

1)棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清除的變數的存

儲區.裡面的變數通常是區域性變數,函式引數等.

2)堆,又叫自由儲存區,它是在程式執行的過程中動態分配的,它最大的特性就是動.

態性.由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,

一般乙個new就要對應乙個delete.如果程式設計師沒有釋放掉,那麼在程式結束後,

作業系統會自動**.如果分配了堆物件,卻忘記了釋放,就會產生記憶體洩漏.而

如果已釋放了物件,卻沒有將相應的指標置為null,該指標就是"懸掛指標".

4)靜態儲存區.所有的靜態物件,全域性物件都於靜態儲存區分配.

5)常量儲存區,這是一塊比較特殊的儲存區,他們裡面存放的是常量,不允許修改

(當然,你要通過非正當手段也可以修改,而且方法很多)

常量字串都存放在靜態儲存區,返回的是常量字串的首位址.

n是全域性變數,儲存在靜態區.進入main函式之前就被建立.生命週期為整個源程式.

m是區域性變數,在棧中分配.在函式func被呼叫時才被建立.生命週期為函式func內.

n只建立一次.

m每次呼叫func都會建立,函式結束就銷毀.

堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區

在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區 1.棧由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。棧空間初始化的時候,空間大小就確定了,棧指標指向棧頂 高位址 壓入棧時 棧指標減減,想低位址移動。棧...

堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區

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

堆疊靜態儲存區

1 從靜態儲存區域分配 內存在程式編譯時就已經分配好,這塊內存在程式的整個執行期間都存在。速度快 不容易出錯,因為有系統會善後。例如全域性變數,static變數等。靜態變數分為區域性靜態變數和全域性靜態變數,注意區分,區域性靜態變數不是全域性變數 靜態全域性變數的作用域僅限於當前原始檔,靜態區域性變...