Login | Register   
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: Beginner
May 2, 2000

Effects of Operator delete

Question:
Why, after deleting an object I allocated dynamically, is the pointer still there? What exactly have I deleted and what would happen if I assigned a new value to the pointer without nullifying it first?

Answer:
You delete the object, not the pointer. The pointer's value doesn't chang when you delete the object to which it points. You don't have to nullify the pointer after its object has been deleted; simply assign the new object's address to it:

int * p1= new int;
delete p1; 
p1= new int; // fine

Nullifying a pointer after applying delete can be useful if you want to guarantee that other parts of the program don't attempt to delete it for the second time:

int * p1= new int;
delete p1; 
// many lines of code
delete p1; //disaster! deleted p1 for the second time

By contrast, deleting a null pointer is harmless:

delete p1;
p1=0;
delete p1; // ok, p1 is null
delete p1; // ok, null pointer deletion has no effect
DevX Pro
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap