Tema: Free vs NULL
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 18/05/2013, 10:48
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Free vs NULL

Hey vosk creo que esto es lo que intentaste hacer.

Código C:
Ver original
  1. int *num;//esto puede ser cualquier cosa, no necesariamente nulo
  2. num = NULL;//ahora es nulo
  3.  
  4. num = malloc(sizeof(int));//bloqueas
  5. *num = 4;//asignas
  6. 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
  7.  
  8. num = NULL;//vuelve a ser nulo
  9.  
  10. num = malloc(sizeof(int));//posiblemente num seguira guardando 4
  11. *num = 5;//ahora vale 5
  12.  
  13. 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.