對靜態區,棧,堆的理解

2021-09-30 13:50:06 字數 331 閱讀 3047

對靜態區,棧,堆的理解

(1)靜態區:儲存自動全域性變數和static 變數(包括static 全域性和區域性變數)。靜態區的內容在總個程式的生命週期內都存在,由編譯器在編譯的時候分配。

(2)棧:儲存區域性變數。棧上的內容只在函式的範圍內存在,當函式執行結束,這些內容也會自動被銷毀。其特點是效率高,但空間大小有限。 

(3)堆:由malloc 系列函式或new 操作符分配的記憶體。其生命週期由free 或delete 決定。在沒有釋放之前一直存在,直到程式結束。其特點是使用靈活,空間比較大,但容易出錯。

注意:其實堆疊就是棧,而不是堆。 堆的英文是heap;棧的英文是stack,也翻譯為堆疊。

對棧,堆,靜態區的認識

區域性變數存放在棧中,全域性變數和靜態資料存放在靜態儲存區,在二進位制 中,顯示在資料段.對於乙個程序的記憶體空間而言,可以在邏輯上分為3個部分 區,靜態資料區和動態資料區。動態資料區一般就是堆 heap 棧 stack 堆和棧是兩種不同的動態資料區,棧是一種線性結構,而堆是一種鏈式結構。棧 只要棧...

棧 堆和靜態區

棧 堆和靜態區 對於程式設計師,一般來說,我們可以簡單的理解為記憶體分為三個部分 靜態區,棧,堆。很多書沒有把把堆和棧解釋清楚,導致初學者總是分不清楚。其實堆疊就是棧,而不是堆。堆的英文是heap 棧的英文是stack,也翻譯為堆疊。堆和棧都有自己的特性,這裡先不做 討論。再打個比方 一層教學樓,可...

靜態儲存區 堆區和棧區

記憶體分配有三種 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式 包括main函式 內區域性變數的儲存單元都可以在棧上建立,函式執行結束時...