NULL pointer is the same as deallocating it?

c++

Solution

A = new MyClass();

{...do something in the meantime...}

A = NULL;

The way I keep track of it is that there are two separate objects. Somewhere on the heap, a `MyClass` instance is allocated by `new`. And on the stack, there is a pointer named `A`.

`A` is just a pointer, there is nothing magical about out, and it doesn't have some special connection to the heap-allocated `MyClass` object. It just happens to point to that right now, but that can change.

And on the last line, that is exactly what happens. You change the pointer to point to something else. That doesn't affect other objects. It doesn't affect the object it used to point to, and it doesn't affect the object (if any) that it is set to point to now. Again, `A` is just a dumb raw pointer like any other. It might be NULL, or it might point to an object on the stack, or it might point to an object on the heap, or it might be uninitialized and point to random garbage. But that's all it does. It points, it doesn't in any way take ownership of, or modify, the object it points to.

Problem

I was working on a piece of code and I was attacked by a doubt: What happens to the memory allocated to a pointer if I assign NULL to that pointer? For instance: ``` A = new MyClass(); {...do something in the meantime...} A = NULL; ``` The space is still allocated, but there is no reference to it. Will that space be freed later on, will it be reused, will it remain on stack, or what?

Original source