Existe alguna forma para saber si una puntero fue liberado correctamente con free()?
Lo ideal es inicializar los punteros, trabajar con ellos, y luego volver al valor inicial cuando no los necesites. Por supuesto esa es la forma mas fácil, pero también es la mas sencilla y mas efectiva en el común de los casos:
ptr=NULL;
Entonces podrás comprobar fácilmente en cualquier contexto del programa si los punteros son validos o no.
dangling pointers Cwild pointers CEn el caso que quiera manipular una gran cantidad de usuarios, en vez de un array de estructuras lo correcto sería utilizar una lista enlazada, verdad?
Podría ser, depende como sea la estructura del programa. Lo importante es tener en cuenta que siempre que necesites insertar y/o borrar datos una lista va a tener mejor rendimiento que un arreglo -por mas que tengamos en contra las llamadas para reservar memoria-. Por el contrario el acceso es bastante mas rápido en un array.
Conoces algún libro que trate sobre practicas sanas en C/C++? Aparte de las que estoy leyendo del libro de deitel&deitel?
La verdad en este momento no me acuerdo de ninguno. Ahora reviso a ver si encuentro algo en el HD externo.