【问题标题】:Is memory leak unavoidable in CC语言中的内存泄漏是不可避免的吗
【发布时间】:2014-02-10 06:29:41
【问题描述】:

我们公司的代码中存在很多内存泄漏错误,通常我们的解决方案是“阅读代码”,尽管我们有工具可以找到内存泄漏的位置。所以我想知道在 C 中内存泄漏是不可避免的,还是不值得进行垃圾收集以牺牲系统的性能。

【问题讨论】:

  • 当然可以避免。
  • “内存泄漏是不可避免的” - 不。反例,打印“hello world”的程序:)
  • 内存泄漏基本上总是可以避免的。
  • @JonathanLeffler 它没有。 “并非不可避免”是“可以避免”(或者我误解了我的评论:/)
  • 今天太晚了……我的错。

标签: c memory-leaks garbage-collection


【解决方案1】:

总是可以避免内存泄漏,只是在进行手动内存管理时很难做到这一点。随着程序变得越来越复杂,正确地进行内存管理变得越来越困难。这就是为什么您会看到许多大型项目实施某种自动或半自动内存管理的原因。例如,GCC 有一个垃圾收集器,Firefox 和 Chrome 等开源 Web 浏览器也有(我相信闭源 Web 浏览器也有它,但不是那么容易分辨)。

重要的是,自动内存管理不会消除所有内存泄漏。数据仍然可以不必要地保留。但自动内存管理使事情变得更容易,并有助于避免两次释放内存或引用已释放内存等错误。

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 2014-07-10
    • 2012-09-23
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多