Tema: Free vs NULL
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/05/2013, 03:14
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Free vs NULL

"...pero luego puede volver a apuntar a otra direccion de memoria..."

Si, y aunque no la liberes tambien puedes reusar ese puntero (p.ej. las listas)

"...al usar free puedo volver a utilizar ese puntero? debo pedir nuevamente memoria?..."

Si y si; si bloqueas con malloc y liberas con free el puntero sigue apuntando a la direccion ahora ya no disponible para la aplicacion; si vuelves a bloquear con malloc ya tienes otra direccion (o la misma, no se sabe) utilizable por la aplicacion hasta el nuevo free o hasta que finalices.

Código:
int *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
Saludos
vosk