Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
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

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 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.

 

 

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