En C (o C ++ para el caso), los punteros son especiales si tienen el valor cero: se me aconseja poner los punteros a cero después de liberar su memoria, porque significa que liberar el puntero nuevamente no es peligroso; cuando llamo a malloc, devuelve un puntero con el valor cero si no puede...