Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Beginner
May 2, 2000



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

Effects of Operator delete

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?

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



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