c ++什么时候终止程序的内存泄漏很重要?

时间:2017-03-08 05:40:03

标签: c++ memory-management memory-leaks

我看了wikipedia文章说

  

通过正常方式,内存泄漏可能不严重甚至无法检测到。在   现代操作系统,应用程序使用的正常内存   应用程序终止时释放。这意味着一个记忆   在一个只运行很短时间的程序中泄漏可能不会被注意到   而且很少是认真的。

操作系统在终止时自动释放正常内存。因此,如果内存泄漏一定不严重,程序泄漏的内存可能在终止后无关紧要。

但它仅在正常记忆的情况下提及"我很担心 任何人都可以解释非正常记忆意味着什么吗?

2 个答案:

答案 0 :(得分:1)

几个哲学原因怎么样? 对于初学者来说,如果您以后需要在程序中重新设计生命周期概念,例如切换到服务,dll,multidoc支持或类似的东西,解决这个问题将成为必须和额外的成本。其次,如果程序没有释放内存,很可能不会释放其他关键资源,例如服务器上的文件锁(纯猜测,当然,我不知道你的程序是做什么的)。

但是,在专用硬件上的实时系统之外,将保证过程终止时的内存释放。那些可以表现得非常不同。

答案 1 :(得分:0)

总的来说;泄漏内存的程序只是该程序运行时的一个问题。它将占用更多的内存,甚至可能耗尽。但是,一旦程序终止,操作系统内核将回收程序所分配的所有内存,因此它将全部免费并可用于其他用途。

实际上,在某些情况下故意在关机时泄漏内存是一种相当常见的技巧。如果知道你的对象析构函数在程序关闭的情况下不做任何后果的工作,那么泄漏对象并让操作系统清理时会更快你正在终止,而不是运行所有的析构函数。然而;只有当你有充分的理由并且真的知道你在做什么以及你为什么这样做时,才会这样做。