C ++中存在内存泄漏多长时间?等效的Java程序有何不同?

时间:2016-01-05 02:52:33

标签: java c++ memory-leaks

这是C ++中的一段简单代码,它只为某个名为Foo的类的实例动态分配内存,然后忘记释放内存。让我们假设Foo非常简单。

int main() {
  Foo *abcd = new Foo();
  return 0;
}

由于程序终止,它真的是内存泄漏吗? 如果我重新运行此程序,先前分配的内存是否可用于分配?

这是等效的Java代码:

public static void main(String[] args) {
  Foo abcd = new Foo();
}

由于程序快速终止,如果垃圾收集器没有足够的时间来释放内存怎么办? 如果我重新运行此程序,先前分配的内存是否可用于分配?

1 个答案:

答案 0 :(得分:6)

在这两种情况下,当程序完成时,所有使用的内存都将被回收。 内存泄漏在运行很长时间(几天,几周,几个月甚至几年)的程序中最为关键。