C++ new 运算符和错误检查

标签 c++

<分区>

我正在微调一个小项目,我读到如果我尝试创建一个新对象会出错,​​如果失败(内存损坏,内存不足?),它会返回错误。

所以我在想,在下面一行中:

Object* myObj = new Object();

在项目中一般是怎么做的?

Object* myObj;
try
{
    myObj = new Object();
}
catch (std::bad_alloc&)
{ 
    //Deal with the Error 
}

或者...

Object* myObj = new (std::nothrow) Object();
if(!myObj)
{
    //Deal with the Error
}

我假设 #2 是最好的操作,因为尝试/捕获每个新的似乎开销太大。

一想到搜索所有新关键字并在各处添加错误检查就……令人沮丧。还有其他选择吗?或者一些选项使 (std::nothrow) 作为 new 的默认操作?

最佳答案

分配失败可能是一个严重的错误,程序无论如何都必须终止,所以如果有的话,它更经常在更高级别(如果有的话)处理,错误的处理只是通知用户然后退出。

关于C++ new 运算符和错误检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18628918/

相关文章:

c++ - Windows Mobile 6.5 C++ - 确定互联网连接

C++::重载运算符*用于矩阵- vector 乘法

c++ - 编写代码帮助编译器进行优化

c++ - 使用 async_read_until 时 boost::asio 会截断输出吗?

python - Python 的 "__init__.py"是否有 C/C++ 等价物?

c++ - 基于返回类型的转换和重载扣除

C++ WinSDK 头文件编译错误

c++ - 黑莓 10 : How to correspond incoming http replies to their previous http request counterparts?

c++ - 在 Qt 中通过 TCP 传输大文件

c++ - 在MFC中,如何让一个按钮连续创建多个对话框实例而不关闭它们?