Acho que isso é de pouca ajuda, como na minha experiência quando as pessoas acessam uma alocação de memória liberada, é quase sempre porque elas têm outro ponteiro para ela em algum lugar. E então entra em conflito com outro padrão de codificação pessoal que é "Evite a confusão inútil", então não o faço porque acho que raramente ajuda e torna o código um pouco menos legível.
No entanto - não definirei a variável como nula se o ponteiro não for usado novamente, mas muitas vezes o design de nível superior me dá um motivo para defini-la como nula de qualquer maneira. Por exemplo, se o ponteiro for membro de uma classe e eu tiver excluído o que ele aponta, o "contrato", se você gosta da classe, é que esse membro apontará para algo válido a qualquer momento, portanto, deve ser definido como nulo por essa razão. Uma pequena distinção, mas acho importante.
No c ++, é importante sempre pensar em quem é o proprietário desses dados quando você aloca alguma memória (a menos que você esteja usando ponteiros inteligentes, mas mesmo assim algum pensamento é necessário). E esse processo tende a levar os ponteiros geralmente a serem membros de alguma classe e geralmente você deseja que uma classe esteja sempre em um estado válido, e a maneira mais fácil de fazer isso é definir a variável de membro como NULL para indicar seus pontos para nada agora.
Um padrão comum é definir todos os ponteiros de membro como NULL no construtor e fazer com que a chamada de destruidor exclua em qualquer ponteiro os dados que o seu design diz que a classe possui . Claramente, nesse caso, você deve definir o ponteiro como NULL quando excluir algo para indicar que não possui dados antes.
Então, para resumir, sim, costumo definir o ponteiro como NULL depois de excluir alguma coisa, mas isso faz parte de um projeto maior e de pensamentos sobre quem possui os dados, em vez de seguir cegamente uma regra padrão de codificação. Eu não faria isso no seu exemplo, pois acho que não há benefício em fazê-lo e acrescenta "confusão", que na minha experiência é tão responsável por bugs e códigos ruins quanto esse tipo de coisa.
ptr == NULL
antes de fazer algo com ele. Se você não anular seus ponteiros livres, obteria,ptr != NULL
mas ainda assim, um ponteiro inutilizável.