C++,新VS Malloc返回值
当我学习C99时,我被告知要始终检查malloc
的返回值,以查看它是成功还是失败,但现在我开始学习C++,他们告诉我new
不需要这样做,您可以假设它对您总是有效的。
但为什么会这样?
解决方案
new
仍然可能失败并引发std::bad_alloc
异常,您的程序需要可能会检查它是否这样做了,或者只是让异常向上传播。您还可以向new
传递一个标志,使其行为类似于malloc
,并在出错时返回NULL
。查看documentation。
编辑 这里有两个例子:
try {
char* arr = new char[20];
} catch (std::bad_alloc& e) {
// Handle error
}
或使用nothrow
标志,使new
行为类似malloc
:
char* arr = new (std::nothrow) char[20];
if (!arr) {
// Handle error
}
相关文章