區別資料結構中的堆疊與記憶體中的堆疊的個人總結

2021-08-17 18:38:46 字數 1216 閱讀 9272

新手上路,如有錯漏,請輕噴。

資料結構中的堆疊:是兩種特殊的資料結構,都是對資料項按序排列的資料結構,對管理資料的一種手段和方法

。可以用來存放資料和位址,棧只能在一端(棧頂)對資料項進行插入和刪除。

記憶體中的堆疊是確切存在的物理結構,是用來存放不同資料的記憶體空間。

記憶體中的棧,是由系統自動分配和釋放的,是由高位址向低位址擴充套件的資料機構,是一段連續的記憶體區域,是對資料結構中的棧這種手段的實現。棧的頂位址和最大容量是系統預先設定好的,在程式編譯時,它就是乙個確定的常數,但注意並不是所有用到棧技術的區域都是棧區,雖然目前是這樣,這是概念定義的準確性問題。 記憶體中堆,一般用來動態分配記憶體的,它的實現跟作業系統和編譯器有關

,一般記憶體中的堆貌似是用鍊錶實現的。

記憶體中的堆:佇列優先,先進先出。向高位址擴充套件的資料結構,是不連續的記憶體區域,在作業系統中,一般是由程式設計師動態分配釋放的,分配方式:作業系統有乙個專門儲存空閒位址的鍊錶,當程式申請分配空間時,os會遍歷這個鍊錶(遍歷方向

:低位址向高位址),找到第乙個大於申請的空間的堆節點,並從空閒節點列表中刪除該節點,把空間分配給程式,若找到的空間比申請的空間要大,系統會自動把多餘的那部分重新放入空閒鍊錶中。一般來說,作業系統會在記憶體的首位址處記錄分配的空間大小,以便程式能夠正確地釋放該記憶體空間。堆的大小取決於計算機有效的虛擬記憶體。

虛擬記憶體:利用部分的硬碟空間充當記憶體使用。由於程式執行是所需記憶體(隨機儲存器ram)過大,會導致記憶體消耗殆盡,系統會自動呼叫硬碟空間充當記憶體,緩解記憶體緊張。

ram空間匱乏時,可以增加虛擬記憶體來進行補償。當計算機從

ram中讀取資料的速度一般比硬碟快,所以想要程式的執行速度更快,最直接的是加記憶體條,

ram越大,程式執行越快。

記憶體中的棧:由作業系統自動分配釋放

,存放函式的

引數值,

區域性變數

的值等。其操作方式類似於資料結構中的棧

,先進後出。它是由高位址向低位址擴充套件的資料機構,是一段連續的記憶體區域,只要棧的剩餘空間大於所申請空間,系統將為程式提供記憶體,否則將報異常提示

棧溢位。

新手上路,若有錯漏,請多多賜教。

資料結構的堆疊與記憶體中堆疊的區別

隨筆 20 文章 0 原文 在計算機領域,堆疊是乙個不容忽視的概念,我們編寫的c語言程式基本上都要用到。但對於很多的初學著來說,堆疊是乙個很模糊的概念。堆疊 一種資料結構 乙個在程式執行時用於存放的地方,這可能是很多初學者的認識,因為我曾經就是這麼想的和組合語言中的堆疊一詞混為一談。我身邊的一些程式...

資料結構中的堆疊和記憶體中的堆疊

記憶體常用的區域分類 棧區 stack 堆區 heap 全域性區 static區 文字常量區 程式 區。棧區 由編譯器自動分配和釋放,遵循 後進先出 的規則。在函式呼叫時,第乙個進棧的是主函式中的下一條指令位址,然後是函式的各個引數 大多數c編譯器中,引數從右往左入棧 然後是函式的區域性變數。靜態變...

談談資料結構中的堆 棧和記憶體中堆和棧的區別

一 資料結構中的堆 棧 堆和棧在資料結構中是兩種不同的資料結構。1 棧 像是往乙個盒子裡面放東西,先放進去的在最低層,後面放上去的在最上面,想拿到最下面的就要先拿掉它上面的。其實,它就是一種後進先出的資料結構。2 堆 像是一顆倒立的大樹 堆是一種經過排序的樹形資料結構,每個節點都有乙個值。通常我們所...