I am wondering what will hapen if I try to do a delete on a pointer that is already deleted, or may have not been allocated ? I’ve read two things : first, that delete operator will do some checkings and we do not need to check if the pointer is null ; and then, I read that it can lead to unknown behaviors..
I’m asking it, because I use some personal objects that contains Qt objects attributes ; I think that Qt delete all widgets associated when we close the window, but I’m not pretty sure and still : if the soft crash before the window’s close, we have to delete all objects manually.
So, what would be the best solution ? Something like that ?
if( my_object )
delete my_object;
Can it avoid dangerous behaviours ?
deleteon an alreadydeleted non-null pointer is undefined behavior – your program will likely crash. You can safely usedeleteon a null pointer – it will yield a no-op.So the real problem is not
deleteon a null pointer. The real problem is here:This can happen if you have several pointers to the same object and it is quite dangerous. The possible solutions are:
deletein your code) ordeleteat exactly the right time.