Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: xeex en 05 de Junio de 2008, 03:09:01 AM

Título: Una pequeñisima duda sobre void free()
Publicado por: xeex en 05 de Junio de 2008, 03:09:01 AM
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.
Título: Una pequeñisima duda sobre void free()
Publicado por: Zaelsius en 05 de Junio de 2008, 03:29:00 AM
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.
Título: Una pequeñisima duda sobre void free()
Publicado por: xeex en 05 de Junio de 2008, 06:15:57 AM
gracias