[Uml-devel] dynamic_cast usage
Luis De la Parra Blum
lparrab at gmx.net
Thu Dec 19 10:58:05 UTC 2002
>
> this is getting a bit OT, but its fun :)
>
> i'm gonna go with john on this one. unitialized and NULL aren't the same
> thing.
of course not, they are not the same. if you delete a pointer that is
uninitialized and it happens to contain garbage, the of course you are going
to run into trouble.
but the whole discussion began because of code like
if(foo)
delete foo;
if your pointer is uninitialized then the "if"-check is not going to help you
in any way.(ok, if you are using linux and have good luck it's going to be
zero, but you can't depend on that, so assume it contains garbage),
The "If" is to *try* to make sure the pointer is pointing to something. As I
said, if it contains zero, then you don't need the "if", because the language
assures you nothing will happen... on the other hand, if it doesnt contain a
value of zero (for example, if it contains garbage), then the "if" will not
do anything, so a code like the above, and a code like
delete foo;
are *exactly* the same in that they do the same thing, but the second might be
a little faster.
to close up, the correct thing to do would be to use smart pointers (for
example boost), or make sure after each delete we set the pointer to zero.
otherwise you have deleted the object, but the pointer still contains a value
(garbage)
luis
More information about the umbrello-devel
mailing list