ヒープ領域
ヒープ領域は、2種類のラベルを持つ双方向リストによって構成されている。初期状態では、リストはひとつの「未使用」ノードが全体を占めていて、メモリ確保ルーチン(C言語のmalloc関数、C++のnew演算子等)によって、「未使用」ノードから必要な分を切り取って「使用中」ノードと「未使用」ノードに分ける。確保したメモリが不要になった場合には、メモリ解放ルーチン(C言語のfree関数、C++のdelete演算子等)によってノードのラベルを「未使用」に書き換える。
動的に確保したヒープメモリ領域は、メモリ確保ルーチンから返却されるポインタや参照によって間接的に管理するが、動的に確保したメモリが不要になった場合、解放し忘れるとメモリリークにつながる。プロセスが動的確保したヒープメモリは、プロセス終了時にオペレーティングシステム (OS) によって自動的に解放されるが、長時間動作をし続けるソフトウェアでは、メモリリークは大きな問題になる。C++ではデストラクタを利用して解放を自動化することが多い(RAII)。ヒープメモリの明示的な解放を必要とせず、どこからも参照されなくなったメモリ領域を自動的に解放する「ガベージコレクタ」を組み込み機能として備えているプログラミング言語もある。
ヒープ領域により、変数を動的に確保できる利点がある。