區別數據結構中的堆棧與內存中的堆棧的個人總結

數據結構中的堆棧和我們編程常說的內存堆棧究竟是怎麼回事,有什麼區別,下面是我個人在網上學習或捕獲到的一些乾貨,供大家參考。

數據結構中的堆棧

是兩種特殊的數據結構,都是對數據項按序排列的數據結構,對管理數據的一種手段和方法。可以用來存放數據和地址,棧只能在一端(棧頂)對數據項進行插入和刪除。

內存中的堆棧

是確切存在的物理結構,是用來存放不同數據的內存空間。內存中的棧,是由系統自動分配和釋放的,是由高地址向低地址擴展的數據機構,是一段連續的內存區域,是對數據結構中的棧這種手段的實現。棧的頂地址和最大容量是系統預先設定好的,在程序編譯時,它就是一個確定的常數,但注意並不是所有用到棧技術的區域都是棧區,雖然目前是這樣,這是概念定義的準確性問題。 內存中堆,一般用來動態分配內存的,它的實現跟操作系統和編譯器有關,一般內存中的堆貌似是用鏈表實現的。

內存中的堆

隊列優先,先進先出。向高地址擴展的數據結構,是不連續的內存區域,在操作系統中,一般是由程序員動態分配釋放的,分配方式:操作系統有一個專門存儲空閒地址的鏈表,當程序申請分配空間時,OS會遍歷這個鏈表(遍歷方向:低地址向高地址),找到第一個大於申請的空間的堆節點,並從空閒節點列表中刪除該節點,把空間分配給程序,若找到的空間比申請的空間要大,系統會自動把多餘的那部分重新放入空閒鏈表中。一般來說,操作系統會在內存的首地址處記錄分配的空間大小,以便程序能夠正確地釋放該內存空間。堆的大小取決於計算機有效的虛擬內存。

虛擬內存

利用部分的硬盤空間充當內存使用。由於程序運行是所需內存(隨機存儲器RAM)過大,會導致內存消耗殆盡,系統會自動調用硬盤空間充當內存,緩解內存緊張。RAM空間匱乏時,可以增加虛擬內存來進行補償。當計算機從RAM中讀取數據的速度一般比硬盤快,所以想要程序的運行速度更快,最直接的是加內存條,RAM越大,程序運行越快。

內存中的棧

由操作系統自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧,先進後出。它是由高地址向低地址擴展的數據機構,是一段連續的內存區域,只要棧的剩餘空間大於所申請空間,系統將爲程序提供內存,否則將報異常提示棧溢出。

————————————————
版權聲明:本文爲CSDN博主「行走的IT菜鳥」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_41856078/article/details/79725852

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章