2017-09-13 60 views
0

我正在使用Visual Studio 2015,但我更喜歡每個版本的通用答案。Visual Studio停止調試程序時是否自動清理內存?

如果我的代碼有內存泄露,並將其與退出值= 0的Visual Studio(F5)內運行: -

  • (Q1)在調試模式,它真泄露?
  • (Q2)在版本模式下,它會真的泄漏嗎?

如果我的代碼儲備一些堆內存,然後我通過我的代碼前,按下紅色矩形按鈕(stop)可適當釋放內存終止它: -

  • (Q3)在調試模式,它會真的泄漏嗎?
  • (Q4)在版本模式下,它會真的泄漏嗎?

我注意到我的程序在幾個run->red button後逐漸慢下來,並且在重新啓動計算機後又變得更快了。這可能只是我的想象力 - 或與GPU有關。

但是,我還記得run->allocate 10MB->red button多次的情況,對後續運行的性能沒有任何影響。

+2

當程序關閉時,操作系統將回收它分配的任何內存。 – DeiDei

+0

@DeiDei我可能會誤解一些重要的事情。你真的是這個意思嗎?如果我在沒有發佈的情況下分配'char * x = new char [10000]''然後在發佈模式下運行。在我的'.exe'存在後,10000字節將被釋放回OS?如果是這樣,從我的程序泄漏的每個內存不會影響長期運行的操作系統?因此,重新啓動計算機與內存泄漏無關? – cppBeginner

+0

調試或發佈模式並不重要。當程序終止時它將被釋放。 – DeiDei

回答

2

當程序退出,無論怎樣退出,操作系統將釋放程序的內存。

+0

請您提供一些參考嗎?這個答案超出了我的想象。 – cppBeginner

+0

@cppBeginner:重新啓動計算機將所有內存重置爲乾淨的版本。重新啓動計算機不是內存泄漏的解決方案,但是如果在可用內存用完之前沒有退出泄漏進程,那麼泄漏可能會導致泄漏 –

+0

@Remy Lebeau這可以解釋很多事情,非常感謝。 – cppBeginner

相關問題