は、プロセス・リソースは、プロセス終了時にOSによって再利用されています。
終了時に明示的にメモリを解放specifcと決定的な理由がない限り、あなたはそれを行う必要はありません、あなたは、少なくともこれらの理由のためにしようとしないでください。
1)あなたはにコードを記述する必要がありますそれをテストし、デバッグしてください。 OSがそれを行うことができるなら、なぜこれを行うのですか?それは単に冗長ではない、あなたのexplictリソース解放は、OSがリリースされる前にすでに持っていたほどのテストを得ることはないので、品質を低下させます。つながるGUIを持つ複雑なアプリケーション、および多くのサブシステムとのスレッドで
2)、クリーンシャットダウン時にメモリを解放することは、とにかく近付いオンに不可能である、:
3)多くのライブラリの開発者は、すでに上あきらめました複雑さがlibsが決して解放されない結果になるので、あなたは明白に言えば...を吐き出す必要があります。多くの人はリリースされていない(紛失されていない)メモリをvalgridに報告し、不透明なライブラリでは何もできません。
4)実行中のスレッドで使用中のメモリを解放しないでください。マルチスレッドアプリケーションですべてのメモリを安全に解放するには、すべてのプロセススレッドが停止していて、再度実行できないようにする必要があります。ユーザーコードにはこれを行うためのツールはありませんが、OSはそうしています。したがって、そのようなアプリでは、ユーザーコードからメモリを明示的に解放することはできません。
5)OSは、大きなチャンクでプロセスメモリを解放することができます。これは、Cマネージャーの何十ものサブアニケーションを使いこなすよりもはるかに迅速です。
6)メモリ管理の問題でプロセスが失敗したためにプロセスが終了している場合、free()を何度も呼び出すことはまったく役に立ちません。
7)教師や教授の多くは、明示的に記憶を解放する必要があると言っているので、明らかに悪い計画です。
あなたのブラウザのように、長い時間がかかるプログラムを考えてみましょう。各スレッドが1メガバイトのWebページ(例を構成)ごとにメモリリークを引き起こす場合は、1日後に何が起こるか想像してください。 'free'を使用してください。それは良い習慣です。 – blazs
メモリがプロセスのライフサイクルを通じて存在する場合は、yesのOSがそれを行います。非常にまれには、プロセスの全生涯にわたって生きる必要があります。 – user3528438
http://stackoverflow.com/q/2215259/1606345 –