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