ヒープ領域
ユーザーによって入力される可変サイズのデータを処理するときなど、必要なメモリの大きさが静的に決まらない場合に有用である。欠点としては領域の確認・確保の時間にばらつきがあり、処理時間の見積もりが困難になることと、領域の確保と解放の繰り返しによりメモリの断片化(後述)が発生することが挙げられる。
「未使用ノード」と「使用中」ノードが混在し、ヒープの未使用領域がバラバラに分断された状態を断片化(フラグメンテーション)状態と呼ぶ。断片化した領域が増えていくと、(空きメモリの合計値は十分であっても)連続した大きなメモリ確保ができなくなってしまう。そのため、解放のつど、あるいはカウンタによって一定水準に達したとき、連続した個々の「未使用」ノードを結合し、大きな「未使用」ノードに還元する。「未使用」ノードが不足した場合には、オペレーティングシステムに領域拡大を要求しヒープ領域を拡大するか、飛び飛びの未使用領域を連続した未使用領域に統合する。これをメモリコンパクション (memory compaction) という。
断片化を起こしにくいヒープ (low-fragmentation heap; LFH) を使用するように、アプリケーションからメモリ確保ポリシーを指定できるOSもある。