Ver Mensaje Individual
  #1  
Antiguo 19-09-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Reputación: 20
elcigarra Va por buen camino
Liberar memoria en una lista

a) Tengo una clase TObject que se llama "miClase".
b) Esta tiene, entre otras, una variable de tipo TStringList (ej: "mistrings")
c) A su vez trabajo con ellas con una lista de objetos miClase (de nombre: miLista)

Supongan que llega el momento de eliminar un ítem de la lista (con todos sus elementos ya creados y utilizados. Para ello utilizaría el metodo delete:
Código:
miClase(miLista.Items[i]).Delete;
Ahora la pregunta. Si tuviera un afán ordenador superior al que tengo con otros aspectos de mi trabajo, y por tanto quisiera eliminar toda la memoria asignada a este obsoleto menester, ¿es necesario el método free?, o alcanza solo con delete?

Por otra parte: debo liberar el stringlist promero o al liberar el objeto ya se libera la memoria del stringlist incluido.

En concreto, es correcto esto?
Código:
miClase(miLista.Items[i]).mistrings.free; //libero mem de la variable tstringlist
miClase(miLista.Items[i]).Delete; //borro el elemento
miClase(miLista.Items[i]).Free;  //libero mem del elemento
o hay lineas de más o de menos?
Responder Con Cita