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.







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.