1. ホーム
  2. c++

[解決済み】メモリリークは大丈夫なのか?[クローズド]

2022-04-03 21:25:12

質問

を持つことは許されるのでしょうか? メモリリーク CやC++のアプリケーションでは?

もし、あるメモリを割り当て、それをアプリケーションの最後の行(例えば、グローバルオブジェクトのデストラクタ)まで使用したらどうでしょうか?時間の経過とともにメモリ消費量が増大しない限り、アプリケーションが終了するときにOSがメモリを解放してくれることを信じてもいいでしょうか(Windows、Mac、Linuxで)?OSが解放するまでメモリが使われ続けていた場合、これを本当のメモリリークとみなすこともできるのでしょうか。

もし、サードパーティのライブラリがこのような状況を強要してきたらどうでしょうか?そのサードパーティーのライブラリーがどんなに素晴らしいものであったとしても、使用を拒否しますか?

現実的なデメリットは1つだけで、それは、これらの良性のリークがメモリリーク検出ツールで誤検出されることです。

解決方法は?

いいえ。

プロフェッショナルとして、私たちが自問すべきなのは、「これをやってもいいのか」ではなく、「こんなことはありえないのか」ということです。 良い そして、「メモリリークを探し出すのは面倒だ」というのは、良い理由とは言えません。

私は物事をシンプルに考えるのが好きなんです。 そしてそのシンプルなルールとは、私のプログラムにはメモリリークがあってはならないということです。

そうすると、私の生活もシンプルになります。 メモリリークを発見したら、それが許容範囲かどうかを判断するために複雑な決定木構造を実行するのではなく、排除してしまうのです。

これは、コンパイラの警告に似ています。その警告は、私の特定のアプリケーションにとって致命的なものなのでしょうか?そうではないかもしれません。

でも、最終的にはプロの規律に関わることです。 コンパイラの警告を許容し、メモリーリークを許容することは、最終的に自分の背中に噛み付くことになる悪い習慣なのです。

極端な話、外科医が患者の体内に手術器具の一部を放置することは許されるのでしょうか?

その器具を取り外すコストやリスクが、入れたままにするコストやリスクを上回る状況が発生する可能性はありますし、無害である状況もあり得ますが、もし私がこの質問をSurgeonOverflow.comに投稿して、「いいえ」以外の答えを目にしたら、医療従事者に対する信頼が大きく損なわれてしまうのではないでしょうか。

-

もし、サードパーティーのライブラリーがこのような状況を強要してきたら、そのライブラリーの全体的な質を真剣に疑うことになるでしょう。 車を試乗したときに、カップホルダーの中に緩んだワッシャーやナットが2つほど入っていたようなものです。