Heap(數據結構)

Heap(數據結構)

本詞條是多義詞,共2個義項
更多義項 ▼ 收起列表 ▲

Heap 譯為"堆"或者是“堆記憶體”。

基本介紹

  • 中文名堆記憶體
  • 外文名:Heap
  • 屬性:一種特殊的樹形數據結構
  • 套用:各種程式語言,例如c++、Java等
  • 套用範圍:Boost C++庫
  • 特點:它滿足堆的特 
解釋,套用範圍,

解釋

在這裡“堆”是一種特殊的樹形數據結構,它滿足堆的特性:父節點的值一定不大於或不小於子節點的值。堆被認為在計算機算法中起到重要作用,並被用於各種程式語言,例如c++、Java等中。

套用範圍

● C++STL算法提供make_heap, push_heap和pop_heap等算法,它們作用於隨機存取疊代器。它們將疊代器當做數組的引用,並用array-to-heap轉換。在C++中我們可以用heap動態分配指針(new和delete)。
●Boost C++庫包含有堆庫。不同於STL, BoostC++支持增減運算,並且支持堆的附加類型,例如d-ary, binomial, Fibonacci, pairing 。
●在Java中堆是Java虛擬機JVM的記憶體數據區。Heap 的管理很複雜,每次分配不定長的記憶體空間,專門用來保存對象的實例。在Heap 中分配一定的記憶體來保存對象實例,實際上也只是保存對象實例的屬性值,屬性的類型和對象本身的類型標記等,並不保存對象的方法(方法是指令,保存在Stack中),在Heap 中分配一定的記憶體保存對象實例和對象的序列化比較類似。而對象實例在Heap 中分配好以後,需要在Stack中保存一個4位元組的Heap記憶體地址,用來定位該對象實例在Heap 中的位置,便於找到該對象實例。
由於Stack的記憶體管理是順序分配的,而且定長,不存在記憶體回收問題;而Heap 則是隨機分配記憶體,不定長度,存在記憶體分配和回收的問題;

相關詞條

熱門詞條

聯絡我們