![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
claro como el agua, solo me queda preguntarte que pasa con aquellos objetos que creas dentro de un procedimiento, por ejemplo, supongamos que tengo un evento click de un botón y que allí creo un objeto mio, a partir de una clase mia, cuando salgo del alcance de dicho procedimiento y no destruyo explícitamente el objeto, ¿que pasa aquí?, como sabemos, puedo volver a cliquear en el botón y volver a redefinir el objeto, si hago esto, por cada click que realizo voy gastando memoria que no se libera?. por supuesto que siempre queda la instancia de destrucción del objeto al cerrar el form, peeeero, siempre hay un pero, podría estar malgastando la memoria si no destruyo explícitamente los objetos creados al terminar el procedimiento. ¿así es el comportamiento de delphi?, vengo de programar en c# y allí teníamos el GC que simplificaba estas cuestiones y no quiero meter la pata, o al menos que no se note.
Saludos. |
|
#2
|
|||
|
|||
|
Cita:
Será porque llevo toda la vida haciendolo a mano, pero cuando programo en C# me pone nervioso no saber que pasa con los objetos que voy creando, me da la sensación de ir ensuciando ;-) Cordialmente, Gerard. p.d. Hay trucos, como por ejemplo después de escribir MiObjeto := TMiObjeto.Create, escribes directamente MiObjeto.Free, y entre las dos lineas escribes el código. Para objetos de un solo uso es la manera de no olvidarte liberarlos después de 300 lineas de código. |
|
#3
|
||||
|
||||
|
Cita:
corremos el riesgo de pérdida de memoria. Siempre hay que proteger el códig para asegurarno que el objeto se libera ante cualquier eventualidad:
Esto garantiza que, aún en el caso de que ocurra un excepción en el código, el objeto se libera adecuadamente. En cuanto a lo de objetos creados localmente dentro de un procedimiento, es lo mismo que con los demás objetos. Debe liberarse antes de salir del procedimiento. A diferencia de otras variables, los objetos locales no se guardan en el stack, de manera que la memoria que ocupan no se libera en automático. // Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Algo Sobre liberar memoria | look | OOP | 3 | 28-11-2007 17:05:37 |
| Aclaracion sobre longirud de campos (???) | Fita | SQL | 1 | 09-11-2005 17:17:26 |
| aclaracion sobre DLL | maruenda | Varios | 1 | 14-09-2004 23:48:07 |
| Aclaracion sobre una pregunta anterior | multisof | Firebird e Interbase | 2 | 06-11-2003 02:07:16 |
| Liberar memoria del HDC | joecool | Gráficos | 2 | 17-05-2003 01:28:51 |
|