Ver Mensaje Individual
  #1  
Antiguo 15-02-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Reputación: 16
noob Va por buen camino
Duda sobre destrucción de objetos compuestos por otros objetos

Hola, me gustaría saber bien cómo destruir objetos pues aunque si no lo hago el programa funciona sin errores no me gusta ir dejando memoria sin liberar.

Yo usaba siempre Destroy para destruir objetos pero en otro hilo y en este otro de este foro me recomendaron destruir con Free aquellos objetos que no fueran hilos.

Hace poco pregunté cómo saber si un objeto estaba creado y ahí me recomendaron usar FreeAndNil(Objeto); para destruir el objeto.

Y la duda que tengo es, si tenemos un objeto con varios atributos cuyos tipos son otros objetos, yo tengo dos opciones de destruir:

1) Desde dentro de la clase del objeto:

Código Delphi [-]
destructor MiClase.Destroy; 
begin   
  FreeAndNil(Atributo1);   
  FreeAndNil(Atributo2);   
  FreeAndNil(Atributo3);   
  FreeAndNil(Atributo4); 
end;

2) Desde fuera de la clase del objeto (en otra clase que use a la anterior):

Código Delphi [-]
FreeAndNil(MiObjetoCompuesto);

En el segundo caso no implemento el método destroy en la clase MiClase y sólo llamo a FreeAndNil desde la clase externa.

¿Qué opción es la correcta? ¿Serían las dos opciones equivalentes?

Otra cosa, ¿Delphi no destruye todos los objetos creados al cerrar la aplicación?

Saludos.

Última edición por noob fecha: 15-02-2009 a las 23:00:09.
Responder Con Cita