class object
{
public:
void check()
{
std::cout<<"I am doing ok..."<<std::endl;
}
};
int main()
{
object *p = new object;
p->check();
delete p;
p->check();
delete p;
p->check();
}
EDIT:
Gurus, i am confused by many of the statements “it may crash or may not”.. why isnt there a standard to say, this how we deal with a block of memory that is deleted using ‘delete operator’..? Any inputs ?
Because what it actually looks like after the compiler has had its way, is something like this:
Since you’re not touching “this”, you don’t actually access any bad memory.
Although, deleting p twice should be able to cause a crash:
http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.2