这是C ++中的一段简单代码,它只为某个名为Foo的类的实例动态分配内存,然后忘记释放内存。让我们假设Foo非常简单。
int main() {
Foo *abcd = new Foo();
return 0;
}
由于程序终止,它真的是内存泄漏吗? 如果我重新运行此程序,先前分配的内存是否可用于分配?
这是等效的Java代码:
public static void main(String[] args) {
Foo abcd = new Foo();
}
由于程序快速终止,如果垃圾收集器没有足够的时间来释放内存怎么办? 如果我重新运行此程序,先前分配的内存是否可用于分配?
答案 0 :(得分:6)
在这两种情况下,当程序完成时,所有使用的内存都将被回收。 内存泄漏在运行很长时间(几天,几周,几个月甚至几年)的程序中最为关键。