C ++内存泄漏新运算符

时间:2013-04-26 01:50:23

标签: c++ pointers memory-management memory-leaks new-operator

我需要确定哪些对象被销毁以及此代码是否存在任何内存泄漏。

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

我的回答是

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

存在内存泄漏。 我们没有删除使用new运算符动态分配的pt。 所以我们需要添加删除pt;在功能结束时。

我的答案是否正确?

1 个答案:

答案 0 :(得分:0)

你错了。试试这个:

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

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