- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メモリを解放しないとどうなる?)
メモリを解放しないとどうなる?
このQ&Aのポイント
- C言語やC++言語のように、動的に確保したメモリを使用後に意識して解放しないといけない言語で、プログラム(アプリケーション)を終了した場合にはシステム的にどうなるのか調査します。
- 確保されたメモリ領域がそのまま残り、システムとして使用できるメモリ量が減るのか、アプリケーションの終了時に自動的に解放されるのかを確認します。
- 特にWindowsの場合について調査し、メモリ解放の重要性と注意点についても解説します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1さんの回答の通りです。 プロセスが終了すると、使用していた資源は 解放されます。ファイルも閉じられます。 mallocを無限に繰り返すプログラムを作り、 これを実行します。タスクマネージャで見ると、 ページファイル使用のラインが上がりっぱなしに なりますが、プロセスを強制終了させると、元の レベルに下がるのが観測できます。
その他の回答 (3)
noname#217196
回答No.3
メモリー領域は解放されないままです。このためメモリーリークという障害をもたらします。 図にすると、下の■のようにメモリーを分断して未解放領域が残ると、連続した□ブロックは本来最大8プロック得られるはずが、それより少なくなってしまいます。 □□□□■□□□
質問者
お礼
ご回答ありがとうございました。 アプリケーションを終了すると取得したメモリ領域は開放されるようです。
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.2
>・malloc して free しない 例えば、 p = malloc(123); // 123は適当な値 /* 何かの処理 */ p = malloc(456); // 456は適当な値 なんて書いちゃうと、1回目のmallocで確保した123バイトの領域が 宙に浮いてしまいます(メモリーリーク)。 プログラムの終了とともにその123バイトを適切に開放してくれるかどうか、 私にはわかりません。
質問者
お礼
ご回答ありがとうございました。 アプリケーションの終了で自動開放されることが確認できました。
- SaKaKashi
- ベストアンサー率24% (755/3136)
回答No.1
プログラム終了で自動解放されます。 実際にプログラムを作成して試せばすぐに分かります。
質問者
お礼
ご回答ありがとうございました。 仰られるとおりアプリケーションの終了で自動開放されることが確認できました。
お礼
確認方法も含めてご回答ありがとうございました。 実際に試してみたところ、ご教示いただきましたとおりPF使用量が増加し続け、アプリケーションの強制終了で元に戻ることが確認できました。