堆疊的區別 堆和棧有什麼不同
- 生活
- 關注:3.24W次
“堆”和“棧”史計算機領域不容忽視的兩個重要概念。學習計算機課程的人,一定會接觸到這兩個概念。堆疊是一種資料結構,同時也是兩個不同的方面。關於“堆”和“棧”到底有什麼區別呢?和小編一起來看看吧!
堆疊的區別
堆疊都是一種資料項按序排列的資料結構,只能在一端(稱為棧頂(top))對資料項進行插入和刪除。在微控制器應用中,堆疊是個特殊的儲存區,主要功能是暫時存放資料和地址,通常用來保護斷點和現場。
所有的資料存入或取出,只能在浮動的一端(稱棧頂)進行,嚴格按照“先進後出”的原則存取,位於其中間的元素,必須在其棧上部(後進棧者)諸元素逐個移出後才能取出。
1、空間分配不同:棧由作業系統自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。
堆(作業系統)一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由OS回收,分配方式倒是類似於連結串列。
2、快取方式不同:棧使用的是一級快取,他們通常都是被呼叫時處於儲存空間中,呼叫完畢立即釋放。
而堆是存放在二級快取中,生命週期由虛擬機器的回收演算法來決定(並不是一旦成為孤兒物件就能被回收)。所以,呼叫這些物件的速度要相對來得低一些。
3、資料結構不同:堆可以被看成是一棵樹,如堆排序;棧是一種先進後出的資料結構。
- 文章版權屬於文章作者所有,轉載請註明 https://miaozhibang.com/shenghuoquan/shenghuo/8pgnw.html