Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Advanced
Jun 11, 1998



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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:
using namespace std;

void f () 
int * p new (nothrow) int; //exception free new
if (p!= NULL)//must check returned pointer of nothrow-new
//...do something with p
Object nothrow is defined (and created) in the <new> 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.
Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date