Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: David8 en 24 Mayo 2014, 19:32 pm



Título: Liberar memoria asignada a una estructura
Publicado por: David8 en 24 Mayo 2014, 19:32 pm
Imaginemos que tenemos una estructura tal que:
Código
  1. struct estructura{
  2. // miembros
  3. };
  4.  
  5. struct estructura *variable;

y ahora
Código
  1. variable = malloc(5 * sizeof(*variable));

Quería saber si liberar la memoria así:
Código
  1. for(i = 0; i < 5; i++){
  2. free( (variable + i) );
  3. (variable + i) = NULL;
  4. }

es correcto.

Un saludo.


Título: Re: Liberar memoria asignada a una estructura
Publicado por: rir3760 en 24 Mayo 2014, 23:50 pm
No lo es. La función malloc reserva un bloque con (al menos) el tamaño indicado y retorna su dirección. Para liberar ese bloque se debe llamar a la función free con la mentada dirección como argumento.

Siguiendo tu ejemplo la forma correcta es:
Código
  1. free(variable);

Un saludo