What if you are referencing that pointer elsewhere in your code?
A lot of developers use simple checks to make sure they can still access that pointer or not.
int * blah = new int();
void changeBlah( void )
{
if( blah )
{
*blah = 1337;
}
}
Later if you call delete on the pointer you might still call the function that changes the value stored in the pointer.
delete blah;
changeBlah();
This function would run and become undefined as you would write over memory you don't own.
delete blah;
blah = 0;
changeBlah();
Now the code would run without any problems at all.