c++ - 判断是否已成功释放动态分配内存的方法

标签 c++ memory memory-management

这是我为二维数组分配动态内存的方式

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)重载 newdelete 运算符并自己进行簿记,但是这太费力了,所以你最好设置内存泄漏检测工具。

当然,我认为这个例子只是一个示例,而不是人们通常会使用的代码,因为:

  1. 您最好避免动态分配,而是使用自动变量。
  2. 如果您必须将智能指针与 RAII 而不是原始指针一起使用。

关于c++ - 判断是否已成功释放动态分配内存的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545201/

相关文章:

mysql - 在非常慢的服务器 2 上替代内连接

iphone - init* 函数会保留传递给它们的内容吗?

c++ - C++14 是否要求删除表达式必须调用 `void operator::delete(void*, std::size_t)` 而不是 `void::operator delete(void*)` ?

c++ - 这个 pow() 函数在 while 循环 C++ 中发生了什么?

c++ - '.' token c++ 之前的预期初始化器

php - 使用 PHPSpreadsheet 构建非常大的电子表格

c - GCC 为 Mersenne 程序输出非常大的可执行文件

c++ - 用于映射的 gluDisk 旋转

c++ - 将 CDialog 转换为 CPropertyPage

memory - __attribute__((packed,aligned(n))) 和 __attribute__((aligned(n))) 有什么区别?