Hey vosk creo que esto es lo que intentaste hacer.
Código C:
Ver originalint *num;//esto puede ser cualquier cosa, no necesariamente nulo
num = NULL;//ahora es nulo
num
= malloc(sizeof(int));//bloqueas*num = 4;//asignas
free(num
);//ahora la posicion de memoria sigue teniendo (int)4 pero no es accesible ni tampoco es nulo, segira siendo 4 hasta que esta aplicacion u otra bloquee esa direccion
num = NULL;//vuelve a ser nulo
num
= malloc(sizeof(int));//posiblemente num seguira guardando 4*num = 5;//ahora vale 5
exit();//al finalizar por si solo se desbloquea la memoria, se recomienda desbloquear manualmente todo lo usado
Voy a dejar un poco de terminología:
int *x; //
Wild Pointer, por que el puntero por ahora se dice que contiene basura o una dirección no valida para su uno. También pasa cuando utilizas free y ahora la dirección a la que apunta no es valida.
Cuando usas malloc pero liberas la memoria y pierdes esa referencia se llama
memory leak.
Hay lenguajes como Java donde tienen su propio
GC (garbage collector) que se encarga de liberar automáticamente la memoria que ya no se vaya a usar.