関連する 2 つの質問があるため、この 1 つのスレッドで質問しています。
Q1) プログラムの終了時に、OS が解放されていないメモリ (malloc を使用して割り当てられた) を自動的にクリアしているかどうかを確認するにはどうすればよいですか? gcc-4.5.2で32ビットのUbuntu 11.04を使用しています
ここのSteven Summitによるチュートリアルページによると、「未使用のメモリ(mallocされたもの)を解放することは良い考えですが、必須ではありません。プログラムが終了すると、割り当てられたが解放されていないメモリは自動的に解放されます。プログラムがメモリを解放するのを忘れたという理由だけで、コンピュータがメモリを何らかの形で「失う」ことになった場合、それはオペレーティング システムに問題または欠陥があることを示しています。」
Q2) foo.c が B バイトのメモリを malloc するとします。その後、foo.c はこの B バイトのメモリ ロケーションを解放し、OS に返します。ここで私の質問は、これらの特定の B バイトのメモリ位置を現在のインスタンスで (OS によって) foo.c に再割り当てできるか、または現在のインスタンスが終了するまでそれらの B バイトを foo.c に割り当てることができないかです。 ?
編集: 私の質問を読むすべての人に、こことここで同様の質問への回答を読むことをお勧めします。どちらの回答も、非常に難解な用語を使用せずに、malloc() と free() の相互作用と動作を詳細に説明しています。カーネルで使用されるメモリ管理ツール (brk()、mmap() など) と C コンパイラで使用されるメモリ管理ツール (malloc()、free() など) の違いを理解するには、これを読む必要があります。