¿Por qué los contenidos apuntados por un puntero no se modifican cuando la memoria se desasigna usando free ()?

Soy un novato cuando se trata de la asignación de memoria dinámica. Cuando liberamos la memoria usandovoid free(void *ptr) la memoria se desasigna, pero el contenido del puntero no se elimina. ¿Porqué es eso? ¿Hay alguna diferencia en los compiladores más recientes de C?

Respuestas a la pregunta(5)

Su respuesta a la pregunta