ヒープ領域

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索

ヒープ領域(ヒープりょういき)とはコンピュータープログラミングにおいて、動的に確保可能なメモリの領域。ヒープ (heap) とは、『山積み』という言葉の中の『山』をさす英単語である。データ構造ヒープとは直接的な関係が無い。

ヒープ領域は、2種類のラベルを持つ双方向リストによって構成されている。初期状態では、リストはひとつの「未使用」ノードが全体を占めていて、メモリ確保関数(C言語malloc, C++のnew等)によって、「未使用」ノードから必要な分を切り取って「使用中」ノードと「未使用」ノードに分ける。確保したメモリが不要になった場合には、メモリ解放関数(C言語のfree, C++のdelete等)によってノードのラベルを「未使用」に書き換える。解放のつど、あるいはカウンタによって一定水準に達した時、連続した個々の「未使用」ノードが結合され、大きな「未使用」ノードに還元される。「未使用」ノードが不足した場合には、オペレーティングシステムに領域拡大を要求し、ヒープ領域が拡大される。 ヒープ領域により、変数領域を動的に確保できる利点があるが、領域の確保と解放の繰り返しによりヒープ上にどこからも参照されない領域が発生することがある。この領域をガベージ(ゴミ)という。 「未使用ノード」と「使用中」ノードが混在、つまりガベージによりヒープ領域がバラバラに分断された状態をフラグメンテーション状態と呼ぶ。


[編集] 関連項目

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス