c++ 终止程序的内存泄漏何时重要?
c++ When does terminating program's memory leak matter?
我阅读了wikipedia文章
记忆泄漏可能不会严重,甚至无法通过正常方式检测到。在 现代操作系统,应用程序使用的正常内存是 应用程序终止时发布。这意味着记忆 可能不会在短时间内运行的程序中泄漏 而且很少严重。
OS在终止时会自动释放正常内存。因此,如果记忆泄漏并不是严重的,则终止后,按程序泄漏的内存可能无关紧要。
,但它仅在"正常记忆"的情况下提到,我很担心。谁能解释什么非正常内存的含义?
几乎没有哲学原因?对于初学者来说,如果您以后需要重新设计生命周期的概念,例如切换到服务,DLL,MultiDoc支持或类似的东西,解决此问题将成为必须和额外的成本。其次,如果程序没有免费内存,则可能不会发布其他关键资源,例如在服务器上文件锁(当然,我不知道您的程序在做什么)。
但是,在专门硬件上的实时系统之外,将保证在过程终止上释放内存。这些行为的行为会有所不同。
一般而言;泄漏内存的程序只是该程序运行时的问题。它将占用的内存超过所需的,甚至可能耗尽。但是,一旦程序终止,OS内核就会收回该程序分配的所有内存,因此它将再次免费并用于其他用途。
在某些情况下,在关闭时故意泄漏内存实际上是一个相当普遍的技巧。如果您知道 您的对象破坏者将不做任何事情,如果该程序无论如何都要关闭,那么只要泄漏对象并让OS清理时,可能会更快您正在终止,而不是运行所有破坏者。然而;仅当您有充分的理由和真正知道您在做什么以及为什么要这样做时才这样做。
相关文章:
- 如何将stdout重定向到stderr
- valgrind-hellgrind与泄漏检查的结果不同
- 何时在引用或唯一指针上使用移动语义
- 何时提供默认参数作为模板参数
- 从构造函数抛出异常时如何克服内存泄漏
- QTableView:endMoveRows在模型中重置水平页眉大小
- malloc() 可能出现内存泄漏
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- C++-明确何时以及如何调用析构函数
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 编写时C++中的输入重定向问题
- 尽管遵循了规则,内存泄漏在哪里
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 为什么调用堆栈数组会导致内存泄漏
- 是否可以知道树中的项目何时被重命名
- c++ 终止程序的内存泄漏何时重要?
- 唯一_ptr何时在此设置器上重置
- 撤消/重做的命令模式:何时不合并撤消命令
- 在Windows上重复数百次后,C++屏幕捕获失败:内存泄漏
- 什么决定临时变量的生存期何时扩展为常量引用或重值引用