3

重複の可能性:
2つの異なる概念が両方とも「ヒープ」と呼ばれるのはなぜですか?

グーグルで検索しましたが、この質問の答えが見つかりません。動的メモリ割り当てで使用されるヒープとデータ構造の間の関係は何ですか?メモリは、ヒープデータ構造と同様の方法でヒープ上に編成されていますか?もしそうなら、これは非常に奇妙に思えます。なぜなら、メモリのフェッチはランダムアクセスAFAIK(つまり、O(1))であるはずですが、ヒープからのアイテムの検索は一定時間で行われないからです。

それで、これは、いわばヒープの過負荷の意味ですか、それとも何らかの接続がありますか?

4

3 に答える 3

5

ヒープは、標準でフリーストアと呼ばれるものの同義語です。関数呼び出しや関数ローカルオブジェクトストレージに使用されるスタックとは対照的に、ヒープは多くの実装で反対方向(上から下)に成長します(スタックは下から上に成長します)。もちろん、これらのどれも標準では必要ありません。

一方、ヒープデータ構造は完全に異なります。これは、特定のプロパティを持つ特殊なツリー構造です。

一部の実装では、名前が派生している可能性があるため、フリーストア管理にヒープデータ構造を使用する可能性があります。(バディメモリアロケーションを参照してください。)

于 2010-03-09T16:40:17.650 に答える
2

いいえ、プログラムヒープはヒープデータ構造とは異なります。言い換えれば、関係はありません。この質問では、プログラムヒープについて詳しく説明します。

于 2010-03-09T16:39:12.540 に答える
0

関係はありませんが、名前がわかりにくい場合があることは認めます。メモリ内のヒープは、OSがプログラムに割り当てる配列です。ヒープは、高速ルックアップのためのプログラムによって実装されます。

于 2010-03-09T16:39:28.307 に答える