【发布时间】:2013-06-06 18:10:44
【问题描述】:
我有以下功能,我的问题是我无法删除 catch 中的 temp 因为它说 temp 未声明但我不明白为什么?任何帮助表示赞赏。
List_Node*List::copy(const List_Node* list)
{
if(list == nullptr)
{
return nullptr;
}
else
{
try
{
List_Node* temp = new List_Node(list -> value_);
temp -> next_ = copy(list -> next_);
return temp;
}
catch (bad_alloc& )
{
delete temp;
throw;
}
}
}
【问题讨论】:
-
{和}对中的所有内容都是局部变量。temp在try {}内部声明,在catch{}内部不可见。 -
因为在不同的范围内...
-
你想删除什么?如果
bad_alloc已被 new 提出,则分配失败,您没有可删除的内容。 -
他可能正试图从递归的
copy中捕获bad_alloc,并删除所有之前分配的好指针。