FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
FreeAndNil no libera los recursos
Hola, tengo el siguiente problema, Tengo la clase TConexionBD que es descendiente de un TDSServerModule, que creo vía código, realizando la siguiente llamada:
Donde FProviderDataBD, es una clase que contiene los parámetros de conexión de la BD (Nombre base de datos, login, password, ruta BD, etc). El constructor de TConexionBD es el siguiente: Y el destructor de TConexionBD es el que sigue: Destructor que es llamado de la siguiente forma: Como verán la destrucción la llevo a cavo utilizando el método freeandnil y validando con assigned que el objeto halla sido creado con anterioridad. Es de suponer que al destruir el objeto este quedara en nil, pero no es así. Si llamo a DestroyConexionBD dos veces en la segunda llamada dispara un error de violación de acceso, esto no debería pasar ya que Assigned comprueba que el objeto este creado para destruirlo. Preguntaran porque llamo 2 veces al destructor. El objeto se crea en forma manual por el usuario y también lo puede destruir el mismo usuario, pero los procedimientos al estar contenidos en un form la destrucción también se lleva a cavo al cerrar el form. Es decir, puede ocurrir que el usuario cierre el objeto y después al cerrar el form el cierre ocurre nuevamente. ¿Es correcta la forma de ?destruir el objeto?, ¿Assigned, comprueba realmente que el objeto ha sido creado?... Saludos.... |
#2
|
||||
|
||||
Hola doctorhd.
Cita:
Pero una clase puede no haber sido instanciada (o ya liberada) y su valor ser diferente de nil, como puede verificarse en este ejemplo:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
|||
|
|||
ecfisa, entonces de que forma puedo validar que un objeto a sido liberado. Pensé que freeandnil, liberaba los recursos y establecía su valor a nil, por lo cual assigned debería devolver false....
Saludos |
#4
|
||||
|
||||
doctorhd,
Cita:
Es exactamente lo que hace FreAndNil y es lo que se demuestra en el código del Msg #2. Revisa esta información: Espero sea útil Nelson. |
#5
|
|||
|
|||
nlsgarcia, entonces porque si al aplicar freandnil en mi código no establece el valor del objeto nil...
Saludos |
#6
|
||||
|
||||
doctorhd,
Cita:
Te sugiero hacer un debug al código en cuestión para verificar, cuando se aplica el FreeAndNil y cuando se verifica con Assigned la existencia del objecto. Solo a modo de pruebas puedes aplicar un FreeAndNil al objeto en cuestión justo antes de comprobar el mismo con Assigned y veras lo comentado en los Msg #2 y #4 Espero sea útil Nelson. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
FreeAndNil VS Free | GerTorresM | OOP | 45 | 30-01-2012 01:54:24 |
Forms: FreeAndNil ó Release y la validación Assigned? | jbautista | Varios | 13 | 09-02-2010 17:33:03 |
Microsoft libera ASP .NET MVC | AzidRain | Noticias | 3 | 10-04-2009 19:06:52 |
Problemas FreeAndNil | OscarG | OOP | 4 | 09-11-2005 12:48:46 |
No libera la MEMORIA | pruz | Varios | 1 | 27-04-2004 21:30:33 |
|