c++内存泄漏新操作符

C++ Memory Leak new operator

本文关键字:操作符 泄漏 内存 c++      更新时间:2023-10-16

我需要确定哪些对象被销毁,以及这段代码是否有内存泄漏。

  void myfunc()
  { 
    Photo a(1, 2);
    Photo* pt = new Photo(2, 3);
    throw runtime_error("to test the exception");
  }
我的答案是

对象在函数结束后销毁,通过自动调用Photo类的析构函数。

存在内存泄漏。我们没有删除用new操作符动态分配的pt。所以我们需要加上delete pt;函数结束

我的答案正确吗?

你错了。试试这个:

void myfunc()
{ 
   Photo a(1, 2);
   Photo* pt = new Photo(2, 3);
   throw runtime_error("to test the exception");
   delete pt;
}

编译并在valgrind下运行。您将得到一个泄漏- delete pt;永远不会到达。