Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What happens to an address after delete operator has been applied to it in C++?

If I delete a pointer as follows for example:

delete myPointer;

And, after that did not assign 0 to the pointer as follows:

myPointer = 0; //skipped this

Will myPointer be pointing to another memory address?

like image 628
Simplicity Avatar asked Feb 14 '11 09:02

Simplicity


2 Answers

No, in most implementations it will store the same address as previously - delete usually doesn't change the address and unless you assign a new address value it remains unchanged. However this is not always guaranteed.

Don't forget, that doing anything except assigning a null pointer or another valid pointer to an already deleted pointer is undefined behavior - your program might crash or misbehave otherwise.

like image 89
sharptooth Avatar answered Oct 05 '22 03:10

sharptooth


myPointer would be pointing to the same memory address. But, it wouldn't be valid for you to use the memory at that address because delete would have given it back to the runtime/operating system, and the operating system my have allocated that memory for use by something else.

like image 37
Scott Langham Avatar answered Oct 05 '22 03:10

Scott Langham