[解決済み] メモリリークはどこまで許されるのか?
質問
何度もメモリリークに遭遇しています。通常、私が
malloc
-を使っているとき、あるいは
FILE *
をぶら下げているようなものです。私は一般的に、少なくともプログラムが終了するときにはすべてのメモリがクリーンアップされていると仮定しています (必死で願っています)。プログラムが終了するとき、またはクラッシュするときに、リークしたメモリが回収されないような状況はありますか?
もし答えが言語によって大きく異なるのであれば、C(++)に焦点を当てましょう。
like there's no tomorrow」、「dangling ... like dirty laundry」という大げさな表現にご注意ください。安全でない*。
malloc
*は、大切な人を傷つける可能性があります。また、汚れた洗濯物の扱いにもご注意ください。
どのように解決するのですか?
いいえ。オペレーティングシステムは、プロセスが終了するときに、プロセスが保持しているすべてのリソースを解放します。
これは、オペレーティング システムが保持するすべてのリソース (メモリ、開いているファイル、ネットワーク接続、ウィンドウ ハンドルなど) に当てはまります。
とはいえ、プログラムがオペレーティング システムのない組み込みシステムで実行されている場合、または非常にシンプルかバグが多いオペレーティング システムの場合、メモリは再起動するまで使用できないかもしれません。しかし、そのような状況であれば、おそらくこの質問をすることはないでしょう。
オペレーティング システムは、特定のリソースを解放するのに長い時間を要することがあります。たとえば、ネットワーク サーバーが接続を受け入れるために使用する TCP ポートは、プログラムによって適切に閉じられたとしても、空きポートになるまでに数分かかることがあります。また、ネットワーク接続されたプログラムが リモート リソースを保持することがあります。ネットワーク接続が失われたとき、リモート システムはそれらのリソースを解放する必要がありますが、ローカル オペレーティング システムよりもさらに時間がかかることがあります。
関連
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] アプリケーションやプロセスの実際のメモリ使用量を測定するにはどうすればよいですか?
-
[解決済み】ローカル変数のメモリはスコープ外からアクセスできる?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】識別子 "string "は未定義?
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された