我需要确定哪些对象被销毁以及此代码是否存在任何内存泄漏。
void myfunc()
{
Photo a(1, 2);
Photo* pt = new Photo(2, 3);
throw runtime_error("to test the exception");
}
我的回答是
函数结束后对象被销毁 ,通过自动调用类Photo的析构函数。
存在内存泄漏。 我们没有删除使用new运算符动态分配的pt。 所以我们需要添加删除pt;在功能结束时。
我的答案是否正确?
答案 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;
。