C++,新VS Malloc返回值 [英] C++, new vs malloc return value

查看:103
本文介绍了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
}

这篇关于C++,新VS Malloc返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆