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

后端 未结 10 1299
北海茫月
北海茫月 2021-01-18 02:29
class object
{
  public:
    void check()
    {
      std::cout<<\"I am doing ok...\"<

        
10条回答
  •  渐次进展
    2021-01-18 03:05

    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

提交回复
热议问题