C++中new的防错处理
#include <iostream>using namespace std;int new1(void){char *test=NULL; while(1) { test = NULL; test = new char[1000000]; if(test == NULL)//错误的处理方式,因为会抛出异常,而非NULL { cout<<"I am wrong\n"; break; } } cout<<"I am ok!\n"; return 0;}int new2(void){char *test=NULL; while(1) { try { test = new char[1000000]; } //catch(...)catch(std::bad_alloc)//正确的处理方式 { cout<<"I am wrong!\n"; break; } } cout<<"I am ok!\n";}int main(int argc,char* argv[]){ new2(); cout<<"--------"<<endl; new1(); cout<<"++++++++"<<endl; return 0;}