Why the below piece of code is not crashing , though i have deleted the object?

c++

Solution

Because what it actually looks like after the compiler has had its way, is something like this:

object::check( object* this )
{
     // do stuff without using this
}

int main()
{        
     object *p = new object;
     object::check( p );
     delete p;
     object::check( p );
     delete p;
     object::check( p );
 }

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

Problem

``` 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 ?

Original source