是的,操作系统通常跟踪每个进程分配的内存,并在这些进程终止时释放它 - 无论如何.
但是,这并不是程序中存在内存泄漏的正当理由:程序应该始终主动释放它获取的资源(包括内存),除非有一个非常好的 - 并且有文档证明 - 没有这样做的原因.
好的理由可能是程序正确性对全局/单个对象的破坏顺序的依赖性,或者在终止之前主动释放分配的内存的代价.
然而,虽然承认可能存在程序员故意避免释放记忆的原因,但请注意不要过于浅薄地认为自己之后不清洁的" 好理由 ".
我鼓励你习惯于编写确实释放它所获取的内存的代码,并在你不打算遵循这种做法的每种情况下以非常清晰的形式明确记录.同样,虽然可能存在需要这种情况的角落情况,但是释放或不释放获得的记忆总是必须是程序员的积极的,有意的决定.
注意:从评论中引用Steve Jessop,你不想主动释放内存的另一个好理由是你的程序需要被终止,因为它以某种方式达到了意想不到的状态 - 可能是违反不变量或者前提条件的一定的功能.通常,违反前提条件意味着未定义的行为.
因为 - 根据定义 - 没有明智的方法从UB恢复,你可能想立即终止你的程序,而不是执行可能有任何结果的进一步行动- 包括非常不受欢迎的行为.
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |