c++ catch catch bad_alloc and delete pointer

c++ catch catch bad_alloc and delete pointer

本文关键字:catch delete pointer and bad c++ alloc      更新时间:2023-10-16

我有以下函数,我的问题是我不能在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;
    }
 }
}

可以这样决定:

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;
    }
 }
}