This constant value 'nothrow' is used as an argument for operator new and operator new[] to indicate that these functions shall not throw an exception on failure, but return a null pointer instead. By default, when the new operator is used to allocate memory and the handling function is unable to do so, a 'bad_alloc' exception is thrown. But when nothrow is used as argument for new , it returns a null pointer instead.
#include <iostream>
using namespace std;
int
main ()
{
try
{
char * p = new char [1000];
}
catch (bad_alloc& e)
{
cerr << "bad_alloc caught: " << e.what() << endl;
}
return 0;
}
==>
#include <iostream>
using namespace std;
int main ()
{
char * p = new (nothrow) char [1000];
if (p==0)
{
cout << "Failed!/n" ;
}
else
{
cout << "Success!/n" ;
delete [] p;
}
return 0;
}