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
}
相关文章