Is "excluir p; p = NULL (nullptr); ”um antipadrão?

Procurando algo no SO, me deparei comessa questã e um dos comentários para a resposta mais votada (o quinto comentário para a resposta mais votada) sugere quedelete p; p = NULL; é um antipattern. Devo confessar que, por vezes, uso-o frequentemente para emparelhá-lo \ na maioria das vezes com a marcaif (NULL != p). O home próprio @ parece sugerir isso (consulte odestroy()exemplo de função @), então estou realmente confuso sobre o porquê de ser tão temido ser considerado um antipattern. Eu o uso pelos seguintes motivos:

Quando estou liberando um recurso, também quero invalidá-lo para uso posterior e NULL é a ferramenta certa para dizer que um ponteiro é inválidoEu não quero deixar para trás ponteiros penduradosEu quero evitar dois \ vários bugs gratuitos - excluir um ponteiro NULL é como um nop, mas excluir um ponteiro danificado é como "dar um tiro no pé"

Observe que não estou fazendo a pergunta no contexto do"esta" ponteiro e vamos assumir que não vivemos em um mundo C ++ perfeito e que o código legado existe e precisa ser mantido, portanto, não sugira nenhum tipo de ponteiro inteligente:).

questionAnswers(7)

yourAnswerToTheQuestion