Por que a parte de código abaixo não está falhando, embora eu tenha excluído o objeto?

<code>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();
}
</code>

EDITAR: Gurus, estou confuso com muitas das declarações "pode ​​falhar ou não" .. por que não há um padrão para dizer, isso como lidamos com um bloco de memória que é excluído usando 'delete operator' ..? Alguma entrada?

questionAnswers(10)

yourAnswerToTheQuestion