Exception-free version of operator new

Exception-free version of operator new

Operator new throws an exception of type std::bad_alloc when it fails to allocate the requested amount of memory. Yet in some circumstances, or due to performance considerations, throwing an exception may be undesirable. Standard C++ supports an exception-free version of operator new for that purpose. Rather than throwing an exception , the exception free version of new returns a null pointer in case of failure:

 #include   using namespace std;void f () {int * p new (nothrow) int; //exception free newif (p!= NULL)//must check returned pointer of nothrow-new{// something with p}}

Object nothrow is defined (and created) in the header file. It’s type is:

 extern const nothrow_t; 

nothrow_t itself is defined like this:

 struct nothrow_t {}; //empty class

In other words, nothrow_t serves as dummy argument allowing the overloading of global new.


Share the Post: