【发布时间】:2013-04-20 02:25:29
【问题描述】:
我需要确定哪些对象被销毁,以及这段代码是否存在内存泄漏。
void myfunc()
{
Photo a(1, 2);
Photo* pt = new Photo(2, 3);
throw runtime_error("to test the exception");
}
我的回答是
对象在函数结束后被销毁 , 通过自动调用 Photo 类的析构函数。
存在内存泄漏。 我们没有删除使用 new 运算符动态分配的 pt。 所以我们需要添加delete pt;在函数结束时。
我的回答对吗?
【问题讨论】:
-
你的答案是错误的。这就是发明智能指针的原因。
-
@chris 这个问题的措辞很奇怪,但我认为答案是正确的,而您的评论是错误的。
-
@MooingDuck,我最具体的说的是把
delete pt;放在最后。 AFAIK,在该行之前抛出异常时不会执行。 -
@chris 好电话,我忽略了那部分
-
哦,智能指针...有人可以用智能指针显示示例吗?
标签: c++ pointers memory-management memory-leaks new-operator