有没有“好”的内存泄漏?

时间:2008-11-27 14:40:57

标签: memory-leaks

  

可能重复:
  Are memory leaks ever ok?

我在某处读到了需要内存泄漏的特殊情况,在某些罕见的情况下实际上是一件好事。但我不记得究竟是什么了!

有人知道或记得这样的争论吗?

谢谢,阿迪

8 个答案:

答案 0 :(得分:5)

我能想到的唯一需要内存泄漏的情况如下:

(虽然除了第一次之外它们都有点复杂)

  • 在编程课中,内存泄漏是一个很好的学习练习的学术情况;包括追踪防止泄密。

  • 我们希望了解我们的软件在漏洞情况下的行为方式的分析/测试场景。

  • 编写漏洞应用程序以使用。

  • 测试/调试分析应用程序

答案 1 :(得分:1)

哇,我很想知道你在哪里听到的。内存泄漏只是意外泄漏内存浪费资源。除非你正在构建你希望你的竞争对手使用的软件(正如美国人在让他们窃取管道控制软件时与俄罗斯人做的那样),我看不出任何理由想要这种行为!

答案 2 :(得分:1)

我能想到的唯一可以接受的是你想要测试代码来处理内存不足的情况。这对于没有交换空间的嵌入式系统很重要,因为内存不足是一种致命的情况。

如果您希望通过自动化单元测试获得接近100%的代码覆盖率,则必须找出某种方法来使自动单元测试中的特定分配请求失败(这说起来容易做起来难。)

完成后,您需要为每个分配请求编写一个单元测试,以确保为该分配正确处理内存不足故障(大量工作)。

答案 3 :(得分:1)

内存泄漏永远不会“正常”。有时你需要分配一块内存而不是解除分配它,因为稍后会需要它,但这不是内存泄漏。但是说内存泄漏等问题可以避免内存碎片,就像说今天跳过工作而不打电话避免迟到更好。

答案 4 :(得分:0)

我从未听说过内存泄漏是一件好事。

在现代操作系统中,它们并不像5 - 10年前那么糟糕。那时候,在监管程序和内存泄漏方面更糟糕的操作系统会导致内存永久丢失,直到重新启动操作系统。

现在,这不是一个真正的问题。因此,最常见的“内存泄漏”是指错误地清理错误并从程序中退出的情况。当程序即将终止时,通常可以让内存保持未释放状态,因为当程序被操作系统拆除时,所有这些都将以任何方式进行处理。

当程序运行时,我认为你没有理由想要内存泄漏。

答案 5 :(得分:-1)

如果您是一家托管公司,那么它们会很好,可以向服务器内存升级收取$$$ ++。

答案 6 :(得分:-1)

@Adi Barda:

从长远来看,泄漏对象消耗更多内存的问题会超出内存碎片问题。

答案 7 :(得分:-2)

如何避免内存碎片?这不是一个足够好的理由吗?