释放动态分配的内存

Zer*_*erg 7 c++ memory allocation dynamic

在C++中,当您在堆上创建一个新变量时,如下所示:

int* a = new int;
Run Code Online (Sandbox Code Playgroud)

你可以告诉C++使用delete这样回收内存:

delete a;
Run Code Online (Sandbox Code Playgroud)

但是,当程序关闭时,是否会自动释放分配了新内存的内存?

Kri*_*ato 6

是的,它会被自动回收,但如果你打算编写一个大量使用堆而不是delete在任何地方调用的程序,你必然会快速耗尽堆内存,这会使你的程序崩溃.

因此,只要您不再需要所述变量,就必须仔细管理您的内存并释放动态分配的数据,并且delete每个new(或者delete []如果使用new [])匹配.