c ++ catch catch bad_alloc并删除指针

时间:2013-06-06 18:10:44

标签: c++ exception pointers

我有以下功能,我的问题是我无法删除捕获中的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;
    }
 }

}

1 个答案:

答案 0 :(得分:0)

决定可以是这样的:

List_Node*List::copy(const List_Node*  list) 
{
    if(list == nullptr) 
    {
        return nullptr;
    }
    else
    {
        List_Node* temp = 0;
        try
        {
            temp = new List_Node(list -> value_);
            temp -> next_ = copy(list -> next_);
            return temp;
        }
    catch (bad_alloc& )
    {
      delete temp;   
        throw;
    }
 }

}

或者在第一种情况下使用auto-ptr。