内存泄漏的常见原因
问题描述:
程序员在开发应用程序时遇到的最常见/频繁的内存泄漏是什么?内存泄漏的常见原因
有兴趣的所有种类的语言,将是很好,如果这可能演变成一个community wiki
在哪里看到不同语言共同泄漏修复。
更新
我有一个建议,以这次谈话限制为C
相关的语言,.NET和Python。我认为这些通常是使用的语言,通常初学者会尝试使用这些语言。如果需要更多语言,请编辑。
答
编辑此添加类似点。
在C++中,
- 忘记删除指针对象。
在PHP中,
- PHP需要的内存管理的忧虑。它在超出范围时自动删除变量的内存。
- 在长时间运行的PHP脚本,它的手动关闭不需要套接字连接,免费的结果对象等
在.NET
- 未能注销事件处理程序是个好主意。
+1
补充:长时间运行的PHP脚本,最好手动关闭不需要的套接字连接,*结果对象等。 – Matty 2011-05-29 18:15:03
答
C++
void Foo()
{
Object* newObject = new Object();
}
对象被初始化在新的存储器,但永远不会因此删除内存泄漏。
要清理超出范围的new'd对象的内存,必须使用delete关键字。
void Foo()
{
Object* newObject = new Object();
delete newObject;
}
答
.NET
未能注销事件处理程序。
尽管在这个问题上有承诺,但我认为未能将其范围限定在特定的语言或环境中会导致它失焦和失败。 – 2011-05-29 18:10:21