在C或C应用程序中使用memory leak是否可以接受?
如果您分配一些内存并使用它直到应用程序中最后一行代码(例如,全局对象的析构函数),该怎么办?只要内存消耗不会随着时间的推移而增长,当您的应用程序终止时(在Windows,Mac和Linux上),是否可以信任操作系统为您释放内存?如果内存被连续使用直到它被操作系统释放,你甚至会认为这是一个真正的内存泄漏.
如果第三方图书馆强迫你这样做怎么办?拒绝使用第三方图书馆,无论它有多么伟大?
我只看到一个实际的缺点,那就是这些良性泄漏会将内存泄漏检测工具显示为误报.
解决方法:
没有.
作为专业人士,我们不应该问自己的问题是,“这样做是否可行?”但更确切地说“有这么好的理由吗?”而“追捕内存泄漏是一种痛苦”并不是一个好理由.
我喜欢简单易懂.简单的规则是我的程序应该没有内存泄漏.
这也让我的生活变得简单.如果我检测到内存泄漏,我会消除它,而不是通过一些复杂的决策树结构来确定它是否是“可接受的”内存泄漏.
它与编译器警告类似 – 警告对我的特定应用程序是否致命?也许不吧.
但这最终是专业纪律的问题.容忍编译器警告和容忍内存泄漏是一个坏习惯,最终会让我陷入困境.
为了使事情变得极端,外科医生是否可以在患者体内留下一些操作设备?
虽然有可能出现这样的情况,即移除该设备的成本/风险超过了将其丢弃的成本/风险,并且可能存在无害的情况,如果我在SurgeonOverflow.com上发布了这个问题除了“不”之外,还有任何答案,这会严重损害我对医学界的信心.
–
如果第三方图书馆强迫我这样做,那将导致我严重怀疑图书馆的整体质量.这就好像我试驾开车,在其中一个杯架中发现了一些松散的垫圈和螺母 – 这本身可能不是什么大问题,但它描述了对质量缺乏承诺,所以我会考虑替代品.