c++ catch catch bad_alloc and delete pointer
c++ catch catch bad_alloc and delete pointer
我有以下函数,我的问题是我不能在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;
}
}
}
相关文章:
- 运算符C++ "delete []"仅删除 2 个前值
- 为什么catch中的代码没有被执行
- catch框架有没有办法比较流或文件
- g++用户定义的动态链接库上的全局new和delete运算符
- 从 Rcpp Catch 测试中获取有关"inst/extdata"的数据
- 为什么"delete"关键字不删除节点?
- "delete"在 C++ 中实际上做了什么?
- 析构函数和'delete'之间的区别
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 如何知道何时调用删除以及何时调用 delete[] C++?
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- 析构函数中的"delete this"
- 为什么数组大小信息可用于"sizeof"运算符和 delete[] 运算符,但在将数组作为参数传递到
- 编译器是否必须始终删除 try-catch 块(如果它被证明是非抛出的)
- 即使在使用 delete[] 后仍保留的元素
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 不能将重载比较运算符与 Catch 测试一起使用
- 如果我在下面的代码片段中添加"delete[] d;",为什么我得到零?
- c++ catch catch bad_alloc and delete pointer