關於棧區和堆區的理解

2022-01-23 10:57:17 字數 394 閱讀 3400

當執行程式的時候,系統記憶體的使用有以下幾個方面

我們就講以下棧區和堆區

在資料結構中,棧的順序是先進後出,類似於一座塔,先進去的在塔 底,後進去的在塔頂 ,出來的自然是塔頂的

1.棧 stack

存放的是宣告的變數,還有引數,空間是由編譯器分配的,程式設計師無法決定,乙個變數宣告後,接下來變數的空間會在當前空間後分配

2.堆 heap

堆區是由程式設計師決定的,在記憶體的分布不是連續的

animal an = new animal();

an所佔的空間就是我們使用者分配的,當程式結束後,我們可以自己釋放,系統也可能自己**

堆區和棧區

1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由系統 3 全域性區 靜態區static 全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,未初始化的全域性變...

棧區和堆區

注意,這裡所說的堆區和棧區指的是 虛擬 記憶體區域,跟資料結構中的堆疊不一樣。棧區 stack 由編譯器自動分配釋放,存放區域性變數的值 函式呼叫所需要維護的資訊等。棧區必須滿足這樣一條規則 先入棧的資料後出棧 first in last out,filo 堆區 heap 一般由程式設計師分配釋放,...

堆區和棧區

棧區 由編譯器自動分配並釋放 存放函式的引數值 區域性變數等 棧空間分靜態分配和動態分配 靜態分配是編譯器完成的比如自動變數 auto 的分配,棧的動態分配無需釋放,也就沒有釋放函式 堆區 由程式設計師分配和釋放,如果程式設計師不釋放,程式結束時,可能會由作業系統 比如ios中的alloc都是存放堆...