2017-09-13 8 views
0

私はVisual studio 2015を使用していますが、私はすべてのバージョンの一般的な回答が好きです。Visual Studioはプログラムのデバッグを停止するとメモリを自動的にクリーンアップしますか?

は私のコードは、メモリがリークが発生している場合、それは、Visual Studio(F5)内部終了値= 0を実行します - デバッグモードで

  • (Q1)、それは実際にリークしますか?
  • (Q2)リリースモードでは、本当にリークしますか?

    • (Q3)で - :

    私のコード予備いくつかのヒープメモリ場合は私のコードが適切にメモリを解放することができます前に、私は赤い四角形のボタン(stop)を押してにそれを終了デバッグモード、それは本当に漏れますか?

  • (Q4)リリースモードでは、本当にリークしますか?

私のプログラムは、いくつかのコンピュータの再起動後に徐々に遅くなります。それは私の想像力、つまりGPUに関係するかもしれません。

ただし、後で実行するパフォーマンスに影響を与えることなく、run->allocate 10MB->red buttonというケースも数回覚えています。

+2

プログラムが閉じられると、OSはそのプログラムによって割り当てられたメモリを再利用します。 – DeiDei

+0

@DeiDei私は何かを真剣に誤解するかもしれません。本当にそう思ってる? 'char * x = new char [10000]'をrelease - >を指定せずに割り当てると、リリースモードで実行されます。私の '.exe'が存在すると、10000バイトがOSに戻されますか?もしそうなら、私のプログラムからのすべてのメモリリークは長期的にはOSに影響しませんか?したがって、コンピュータの再起動はメモリリークとはまったく関係ありません。 – cppBeginner

+0

デバッグモードまたはリリースモードは関係ありません。プログラムが終了すると解放されます。 – DeiDei

答えて

2

プログラムが終了、関係なく、それはを終了するか、オペレーティング・システムは、プログラムのメモリを解放しません。

+0

参考にしてください。この答えは私の想像以上です。 – cppBeginner

+0

@cppBeginner:コンピュータを再起動すると、すべてのメモリがクリーンスレートにリセットされます。コンピュータを再起動することはメモリリークの解決策ではありませんが、メモリが使い果たされる前にリークしたプロセスを終了しないと悪いリークが発生する可能性があります –

+0

@Remy Lebeauこれは多くのことを説明することができます。 – cppBeginner

関連する問題