这是我为二维数组分配动态内存的方式
char **twod;
twod=new char*[count];
for (int i = 0; i < count; i++)
{
twod [i] = new char [MAX];
}
这是我释放二维数组内存的方式
for (int i=0; i<count;i++)
{
delete [] twod [i];
}
delete [] twod;
我怎么知道我已经成功释放所有东西并且没有内存泄漏???
最佳答案
Ways to tell if you have successfully released dynamic allocated memory
在 valgrind 或任何此类内存泄漏检测工具中运行代码。
如果你愿意,你也可以为你的类(class)重载 new
和 delete
运算符并自己进行簿记,但是这太费力了,所以你最好设置内存泄漏检测工具。
当然,我认为这个例子只是一个示例,而不是人们通常会使用的代码,因为:
- 您最好避免动态分配,而是使用自动变量。
- 如果您必须将智能指针与 RAII 而不是原始指针一起使用。
关于c++ - 判断是否已成功释放动态分配内存的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545201/