C++中的std::nothrow使用
作者:distant1219
这篇文章主要介绍了C++中的std::nothrow使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
C++的std::nothrow使用
在 C 语言中,使用 malloc
申请内存时,需要判断一下是否申请成功。如果返回指针为 NULL
, 则不成功。所以只需要判断返回指针是否为空即可。
而在 C++ 中,通过 new
申请一段内存空间时,如果不成功,其返回的是一个异常 std::bad_alloc
,需要用 try catch
去捕获这个异常来判断成功与否。
而C中的判断方式是很方便的,为了使用和C中一样的方式,于是提出了 std::nothrow
的方式。字面意思就是不要抛出异常,即如果申请失败,返回空指针即可。
使用方式如下:
int* val = new (std::nothrow) int[10]; Student* stu = new (std::nothrow) Student('Jack');
C++error C2039: “cout“: 不是“std“的成员
case1:
包含文件次序错了。改为`
#include "stdafx.h" #include "iostream" .....
case2:
没有添加命名空间std所在的头文件iostream
正确写法:
#include "stdafx.h" #include <iostream> int main() { std::cout << "hello world!I'm C++." << std::endl; system("pause"); return 0; }
或
#include "stdafx.h" #include <iostream> using namespace std; int main() { cout << "hello world!I'm C++." << endl; system("pause"); return 0; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。