2017-09-13 35 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

相关问题