Liberar memoria asignada a una estructura

Iniciado por David8, 24 Mayo 2014, 19:32 PM

0 Miembros y 1 Visitante están viendo este tema.

David8

Imaginemos que tenemos una estructura tal que:

struct estructura{
// miembros
};

struct estructura *variable;


y ahora

variable = malloc(5 * sizeof(*variable));


Quería saber si liberar la memoria así:

for(i = 0; i < 5; i++){
free( (variable + i) );
(variable + i) = NULL;
}


es correcto.

Un saludo.

rir3760

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:
free(variable);

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language