C++,new 与 malloc 返回值

2024-03-22

当我学会的时候C99我被告知要始终检查返回值malloc检查它是成功还是失败,但现在我开始学习C++我被告知不需要使用关键字来执行此操作new,并且您可以假设它始终对您有用。

但这是为什么呢?


new仍然可能失败并抛出一个std::bad_alloc异常,并且您的程序需要可能会检查它是否发生,或者只是让异常向上传播。还有一个标志你可以传递给new让它表现得像malloc并返回NULL出错时。看看文档 http://www.cplusplus.com/reference/new/operator%20new/.


Edit下面是两个例子:

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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++,new 与 malloc 返回值 的相关文章

随机推荐