堆和棧的區別(堆和棧的區別和聯絡)

來源:酷知科普網 1.6W

簡要回答

平時所說的堆和棧的區別其實有很多,像堆和棧的空間搭配不同。所謂的棧其實是由作業系統自動分配釋放會存在函式的引數值,區域性變數值等等,具體的操作方式就是資料結構中的棧。

而平時生活中所說的堆,它主要是由程式設計師分配釋放,如果程式設計師在這方面並沒有釋放,那麼程式設計師在結束程式設計時,可由os回收分配方式,其實它跟列表相似。

堆和棧的區別(堆和棧的區別和聯絡)

堆疊的快取方式不同
平時所說的堆和棧在快取方式方面各有不同,比如棧使用的是一級快取,堆使用的是二級快取。通常棧是指被呼叫時處於儲存空間當中,一旦呼叫完成之後將會被釋放,但是堆它主要是生命週期,由垃圾回收演算法來決定。

堆和棧的區別(堆和棧的區別和聯絡) 第2張

堆疊資料結構有很大的區別
要說堆,它是一種先進先出的資料結構,而所謂的棧,它代表的是先進後出的資料結構。而平時所說的堆記憶體跟棧的儲存會有一定的區別,但是都允許程式設計師在執行時動態申請某個大小的記憶體,空間棧記憶體主要是函式中定義的一些基本練習的變數和物件的引用變數,需要在整個函式當中合理的分配。

堆和棧的區別(堆和棧的區別和聯絡) 第3張
熱門標籤