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;
Veja artigo no SearchSecurity.com. Esse artigo tacha dangling pointers, incorretamente, de programming errors. Não se trata de um erro de programação. Pelo contrário: atribuir um valor a um ponteiro que se tornou inútil é decididamente deselengante (embora possa ajudar a depurar o programa).