Autor |
Mensaje |
cyberx0x
Aprendiz
Registrado: Septiembre 2009
Mensajes: 63
Edad: 36 Ubicación:
|
¿Como Destruyo Un Objeto?
Mi pregunta es como destruyo un objeto ya creado para poder liberar la memoria utilizada,tengo entendido que es con free pero no tengo idea como , si alguien puede ayudarme y si pueden subir codigo que mejor les estare muy agradecidos
|
#1 Jueves, 05 Noviembre 2009, 01:13 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: ¿Como Destruyo Un Objeto?
Hola
El método _free no es para destruir objetos. El método _free se ejecuta cuando el evento se destruye para deshacer algo que hiciste al crearlo (por ej. cerrar un stream que abriste al crearlo).
Para destruir un objeto muchos objetos tienen el método .delete
Dim T as new textbox ---> al hacer esto se crea un nuevo objeto T de clase textbox y se ejecuta _new
...
T.delete ---> eliminas el objeto T y se ejecuta _free
Si no es puramente un objeto, pero es un stream lo destruyes al cerrarlo por ejemplo. Los stream no se destruyen. Se cierran. Los sockets, los ficheros, etc son streams de diferentes tipos. Por eso en un socket no encontraras el método .delete pero encontrarás el .close
|
#2 Jueves, 05 Noviembre 2009, 05:37 |
|
|
cyberx0x
Aprendiz
Registrado: Septiembre 2009
Mensajes: 63
Edad: 36 Ubicación:
|
Re: ¿Como Destruyo Un Objeto?
Mira lo que pasa es que tengo un algoritmo genetico que usa arboles binarios, al principio creo unos 30 de esos arboles despues apligo el genetico y los arboles que no me sirven los tengo que borrar si no se me satura la memoria, como le hago para destruir esos arboles que ya no me sirven
|
#3 Jueves, 05 Noviembre 2009, 06:30 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: ¿Como Destruyo Un Objeto?
No sé muy bien lo que es un arbol genético.
Me puedo imaginar que quizá es un esquema de padres/hijos/nietos. Igual si, igual no, igual tiene muchas mas implicaciones.
En lo que se refiere a informática ¿Estas hablando de un treeview y lo que quieres es borrar una rama? ¿Estas hablando de un columnview y lo que quieres es borrar unas filas? ¿Estas hablando de objetos diversos esparcidos por un formulario?
Deberías ser más concreto en tus preguntas y aportar ejemplos de tu código para poder ver cómo abordar tu problema.
Mensaje moderado por Administrador
|
#4 Jueves, 05 Noviembre 2009, 14:18 |
|
|
maikl
Usuario
Registrado: Octobre 2009
Mensajes: 48
Edad: 45 Ubicación: Bellvís (Lleida)
|
Re: ¿Como Destruyo Un Objeto?
Creo que está creando objetos en memoria que serian como "entes" que contienen una serie de información, esta información se cruza con otros "entes" como si se reproduciesen obteniendo un nuevo ente con un mix de las caracteresticas, que tendrian una información nueva, mejor o peor.
Luego un algoritmo recorre los entes y comprueba su "peso" o su calidad descartando los peores elementos (como con la selección natural o artificial), dejando algunos malos para evitar estancamientos posiblemente.
Supongo que lo que quiere saber es como eliminar completamente los entes o genes, los objetos que ya no son necesarios.
En vb6 seria un
Set objEnteMalo = Nothing
Es una suposición.
|
#5 Jueves, 05 Noviembre 2009, 19:20 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: ¿Como Destruyo Un Objeto?
Pero el problema no es seguramente entender el algoritmo, sino entender qué clase de objetos utiliza y cómo los genera... llámese colección, array, o la clase de objeto que sea, para poder determinar la manera de destruírlos y liberar recursos.
Cuando se plantea un problema, es muy conveniente concretar mucho más, no ser tan ambiguo y si es posible adjuntar el código que empleas, o al menos un pseudocódigo. Es mi opinión y creo que la de muchos. De otro modo no será posible ofrecer ayuda alguna, por mucho que queramos.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#6 Jueves, 05 Noviembre 2009, 19:39 |
|
|
cyberx0x
Aprendiz
Registrado: Septiembre 2009
Mensajes: 63
Edad: 36 Ubicación:
|
Re: ¿Como Destruyo Un Objeto?
Ha ya entiendo cual es el problema, miren lo unico que necesito es que me enseñen a liberar esa memoria, supongamos que tengo el objeto individuo que tiene lo siguiente
nombre string
edad integer
peso float
y pues creo unos 4 individuos
juan = new individuo
pedro= new individuo
luis = new individuo
adrian = new individuo
pero ahora supongamos (en teoria que la memoria de la computadora solo soporta 4) y quiero crear otro como le hago para matar a uno de estos tipos y permitir que nazca otro
no hay problema del abb o del algoritmo genetico lo unico que necesito es como destruir objetos
|
#7 Viernes, 06 Noviembre 2009, 02:53 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: ¿Como Destruyo Un Objeto?
Hola
Ya veré cuando tenga mas tiempo pero mas o menos te doy la idea de lo que tienes que hacer.
1 Tienes que crear un nuevo control.
2. Para ello creas una clase nueva con las propiedades nombre, edad, peso y que herede la clase control.
3. Por haber añadido estas propiedades tu podras crear nuevas instancias de esa clase que tendrá las propiedadse que tu necesitas y el método .delete para destruirlo.
Aquí tienes alguna información al respecto
Gambas: clases y objetos
Ayuda en la creación de un componente
De la creacion del componente hay cosas que no necesitas porque tu no vas a exportarlo a gambas como un componente mas (seguramente) pero en ese post se explica como crear un control y como exportarlo a gambas. A ti te interesa saber como crear el control. Una vez lo tengas creado cada vez que quieras crearlo haces un nuevo new y cada vez que quieres destruirlo haces un nuevo .delete
Echa un vistazo y si no te sale a ve que podemos hacer
|
#8 Viernes, 06 Noviembre 2009, 04:52 |
|
|
maikl
Usuario
Registrado: Octobre 2009
Mensajes: 48
Edad: 45 Ubicación: Bellvís (Lleida)
|
Re: ¿Como Destruyo Un Objeto?
No se si seria bueno hacer un control para esto, ya que será un objeto pesado al ser heredado de "control", creo que necesita un objeto lijero que solo tenga lo que necesita.
Me parece que la pregunta se podria resumir en:
Hay algo parecido al "Set miobjeto = Nothing" de visual basic 6?
|
#9 Viernes, 06 Noviembre 2009, 15:10 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: ¿Como Destruyo Un Objeto?
Hasta donde yo se no lo hay.
Por eso veo como solución la creación de un control que no veo porque tiene que ser pesado porque al fin y al cabo es una clase con las propiedades de edad, peso y nomber pero que hereda las propiedades de los controles enter las que se encuentran los métodos new y delete.
sería cuestión de hacer pruebas a ver el peso en memoria pero creo que es algo factible.
|
#10 Viernes, 06 Noviembre 2009, 15:56 |
|
|
|