我们公司的代码中存在许多内存泄漏错误,通常我们的解决方案是“阅读代码”,尽管我们有工具来发现内存泄漏的位置。所以我想知道C中的内存泄漏是不可避免的,或者不值得做垃圾收集来牺牲系统的性能。
答案 0 :(得分:0)
总是可以避免内存泄漏,只是在进行手动内存管理时可能很难这样做。随着程序变得复杂,正确地进行内存管理变得更加困难。这就是为什么你看到许多大型项目实现某种自动或半自动内存管理。例如,GCC有一个垃圾收集器,像Firefox和Chrome这样的开源Web浏览器(我确信封闭的源Web浏览器也有它,但它不是那么容易辨别)。
重要的是不要自动内存管理不会删除所有内存泄漏。数据仍然可以不必要地保留。但是自动内存管理使事情变得更容易,并有助于避免错误,例如释放内存两次或引用已释放的内存。