Por razões de segurança, convém não deixar dangling pointers no seu código, pois isso pode ser explorado por hackers para atacar sua máquina. Portanto, depois de cada free (ptr), faça ptr = NULL:
free (ptr); ptr = NULL;
Atribuir um valor a um ponteiro que se tornou inútil é decididamente deselegante, mas não há como lidar com hackers de maneira elegante…
Veja artigo no SearchSecurity.com. Esse artigo tacha dangling pointers, incorretamente, de programming errors. Não se trata, propriamente, de um erro de programação. Pelo contrário: atribuir NULL a um ponteiro inútil é decididamente deselengante. Infelizmente, não há como lidar com hackers de maneira elegante…