c++ 终止程序的内存泄漏何时重要?

c++ When does terminating program's memory leak matter?

本文关键字:何时重 泄漏 内存 终止程序 c++      更新时间:2023-10-16

我阅读了wikipedia文章

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

OS在终止时会自动释放正常内存。因此,如果记忆泄漏并不是严重的,则终止后,按程序泄漏的内存可能无关紧要。

,但它仅在"正常记忆"的情况下提到,我很担心。谁能解释什么非正常内存的含义?

几乎没有哲学原因?对于初学者来说,如果您以后需要重新设计生命周期的概念,例如切换到服务,DLL,MultiDoc支持或类似的东西,解决此问题将成为必须和额外的成本。其次,如果程序没有免费内存,则可能不会发布其他关键资源,例如在服务器上文件锁(当然,我不知道您的程序在做什么)。

但是,在专门硬件上的实时系统之外,将保证在过程终止上释放内存。这些行为的行为会有所不同。

一般而言;泄漏内存的程序只是该程序运行时的问题。它将占用的内存超过所需的,甚至可能耗尽。但是,一旦程序终止,OS内核就会收回该程序分配的所有内存,因此它将再次免费并用于其他用途。

在某些情况下,在关闭时故意泄漏内存实际上是一个相当普遍的技巧。如果您知道 您的对象破坏者将不做任何事情,如果该程序无论如何都要关闭,那么只要泄漏对象并让OS清理时,可能会更快您正在终止,而不是运行所有破坏者。然而;仅当您有充分的理由和真正知道您在做什么以及为什么要这样做时才这样做。