I tried to deallocate same pointer twice and it failed, but if I follow the same steps with not making it NULL the code runs fine.
 #include <iostream>
    struct MyClass {
      MyClass() {std::cout << "Allocated and Constructed" << std::endl ;} 
    };
    int main () {
      // allocates and constructs five objects:
      MyClass * p1 = new MyClass[5];
      delete[] p1;
      delete[] p1; // The code will succeed if I comment this line of code
      p1=NULL;
      delete[] p1;
      delete[] p1;
      return 0;
    }
I see a good answer to the question What happens when you deallocate a pointer twice or more in C++? but what makes it run if I make it NULL, shouldn't be the same behaviour to follow for both the cases?
 
     
     
     
    