スタックのメモリは関数の実行終了時に解放されますが、ヒープのメモリは解放するタイミングが難しく、プログラミング言語によって扱いが異なります。 初期のC言語ではメモリの確保や解放をすべてプログラマーが手動で管理する必要がありました。