23

フリー ストアが一般にヒープと呼ばれる公式の (または十分な) 理由を見つけようとしています。

データセグメントの最後から成長するという事実を除いて、特にヒープデータ構造とはほとんど関係がないため、正当な理由は思いつきません。

注: かなりの数の人が、整理されていないものがたくさんあると述べています。しかし、私にとって物理的なヒープという用語は、互いに物理的に依存している一連のものを意味します。1 つを下から引っ張り出すと、その上に他のすべてが崩れ落ちます。これは、ほとんどのコンピューターで実際にヒープがどのように機能するかということではありません。

4

9 に答える 9

36

Knuthは、空きメモリストアの同義語として使用される「ヒープ」という用語を拒否します。

何人かの著者は、利用可能なメモリのプールを「ヒープ」と呼ぶために1975年頃に始めました。しかし、現在のシリーズの本では、優先キューに関連するより伝統的な意味でのみその単語を使用します。(基本的なアルゴリズム、第3版、p。435)

于 2009-03-19T02:47:32.930 に答える
17

スタックとは対照的なイメージを思い起こさせることから、ヒープと名付けられました。

  • アイテムのスタックでは、アイテムはそこに配置された順序で他のアイテムの上に置かれ、一番上のアイテムのみを削除できます (全体を倒す必要はありません)。

    書類のように積み重ねる

  • ヒープでは、アイテムの配置方法に特定の順序はありません。明確な「トップ」アイテムがないため、任意の順序でアイテムに手を伸ばして削除できます。

    甘草の山盛りのように盛りだくさん

スタックとヒープでメモリを割り当てて解放する 2 つの方法をうまく説明しています。うーん!

于 2009-03-19T13:55:38.003 に答える
3

最初かどうかはわかりませんが、ALGOL 68 には空きメモリ ヒープからメモリを割り当てるためのキーワード「heap」がありました。

「ヒープ」の最初の使用は、John McCarthy が Lisp のガベージ コレクションを発明し、ALGOL 68 が開発された 1958 年のどこかで見つかる可能性があります。

于 2009-03-19T04:01:44.390 に答える
2

それは、まとまりのないがらくたの大きく絡み合った山であり、どこを見ればよいかを正確に知らない限り、何も見つかりません。

于 2009-03-19T02:59:50.530 に答える
1

スタックと比較して、それを説明するのは一種の巧妙な方法だといつも思っていました。ヒープは、大きくなりすぎて整理されていないスタックのようなものです。

于 2009-03-19T03:06:51.980 に答える
0

javaやjavascriptと同じように、ヒープ(フリーストア)とヒープ(データ構造)は、友愛が部外者に浸透しないように名前が付けられているため、仕事が安全に保たれます。

于 2009-03-19T02:58:19.677 に答える
0

通常、ヒープには次の機能があります。

  1. malloc() が返すブロックのアドレスを予測することはできません。

  2. 次の malloc() によって返されるアドレスが前のアドレスとどのように関連しているかはわかりません。

  3. 可変サイズのブロックを malloc() できます。

したがって、可変サイズのブロックの束を保存し、一般的に予測できない順序でそれらを返すことができるものがあります。「ヒープ」ではない場合、他にどのように呼びますか?

于 2009-03-19T07:20:42.417 に答える