Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Una pequeñisima duda sobre void free()

Iniciado por xeex, 05 de Junio de 2008, 03:09:01 AM

« anterior - próximo »

xeex

Hola
Si tengo:

typedef struct {    
   float *vector;    
}Call_Lists;
int main()
  {
     .
     .
     .
     Call_Lists  *CL=(Call_Lists *) malloc (19*sizeof (Call_Lists));
     for(int i=0;i<19;++i)
        CL[i].vector=(float *)malloc (24*sizeof (float));    
     .
     .
     .
  }


cuando salgo, me vasta con ponerle un:

free(CL)

o tambien deberia hacerle un

for(int i=0;i<19;++i)
  free(CL[i].vector)


Si pueden me justifican la respuesta...
Muchas gracias.
Saludos.

Zaelsius

La regla de oro es "por cada malloc(), un free()".

El sistema operativo solo sabe que tú reservaste N zonas de memoria y por tanto debes liberar cada zona de manera individual. El hecho de que agrupes los punteros a dichas zonas en una estructura propia es indiferente.