堆疊,託管堆,堆,棧的區別

2022-02-03 21:02:10 字數 345 閱讀 9657

博主做了兩年的程式設計師了看網上的文章有時候各種迷惑,今天終於弄明白了這四個詞之間的關係,由於之前是寫c++的,之後又寫了c#所以就各種迷茫.一下是正確答案:

c++:

堆:(heap) — 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os** 。它與資料結構中的堆是兩回事,分配方式類似鍊錶.

棧:(stack)— 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。 

.net/c#:

堆:c#中一般叫做託管堆,就是c++中的堆

棧:c#中一般就叫"堆疊",就是c++中的棧,其實"堆疊"這個名字真的很讓人誤解,老以為它是在描述籠統的概念.

棧和佇列 堆 堆疊的區別?

原文 佇列是先進先出,有出口和入口,先進去可以先出來。棧就像乙個箱子,後放上去的,可以先出來 堆是在程式執行時,而不是在程式編譯時,申請某個大小的記憶體空間。即動態分配記憶體,對其訪問和對一般記憶體的訪問沒有區別。堆是指程式執行是申請的動態記憶體,而棧只是指一種使用堆的方法 即先進後出 棧是先進後出...

棧和佇列 堆 堆疊的區別?

佇列 queue 是先進先出,有出口和入口,先進去可以先出來。棧 stack 就像乙個箱子,後放上去的,可以先出來 堆 heap 是在程式執行時,而不是在程式編譯時,申請某個大小的記憶體空間。即動態分配記憶體,對其訪問和對一般記憶體的訪問沒有區別。堆是指程式執行是申請的動態記憶體,而棧只是指一種使用...

堆 堆疊和佇列

堆和堆疊的區別 1 堆疊的大小是固定的,編譯器需要知道存放到堆疊的資料的大小,靈活性較差。引用存放在堆疊中。堆可以動態分別空間,大小沒有限制比較靈活。通過new建立的物件存放在堆中。2 堆疊只有乙個出入口,是先進後出的資料結構。先分配的記憶體後釋放。堆中的資料是無序的,建立和釋放內容都沒有固定的順序...