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
Language: C++
Expertise: Advanced
Mar 19, 1999

Placement New Objects Must be Destroyed Explicitly

Objects constructed on a pre-allocated buffer by using placement new must be destroyed explicitly.
 
#include <new>
#include <iostream>
using namespace std;

class C
{
public:
	C() { cout<< "constructed" <<endl; }
	~C(){ cout<< "destroyed" <<endl; }
};

int main()
{
 char * p = new char [sizeof(C)];  // pre-allocate a buffer
 C *pc = new (p) C;  // placement new
 //... used pc
 pc->C::~C(); //explicit destructor invocation is required
 delete [] p; 
 return 0;
}
Without an explicit destructor invocation, the object would never be destroyed, yet the memory on which it was created would be released by the delete[] statement.
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