jeudi 25 mai 2017

Pointers in c++ after delete

After reading many posts about this, I want to clarify the next point:

A* a = new A();
A* b = a;

delete a;

A* c = a; //illegal - I know it (in c++ 11)
A* d = b; //I suppose it's legal, is it true?

So the question is about using the value of copy of deleted pointer.

I've read, that in c++ 11 reading the value of a leads to undefined behavour - but what about reading the value of b?

Trying to read the value of the pointer (note: this is different to dereferencing it) causes implementation-defined behaviour since C++14, which may include generating a runtime fault. (In C++11 it was undefined behaviour) What happens to the pointer itself after delete?

Aucun commentaire:

Enregistrer un commentaire