FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Global Var Units, ¿que pasa cuando se libera el formulario?
Hola,
Mi duda viene de una conversación en otro hilo de este foro. Cuando declaro una variable en la sección de la unidad (no en la sección de la declaración de la clase del formulario), qué pasa cuando libero la memoria del formulario, esa variable ¿se libera también? o ¿quedará en la memoria hasta que se cierra toda la aplicación?. Saludos. |
#2
|
||||
|
||||
Creo que te lo he respondido en el otro hilo. Tienes que pensar que tu formulario es una clase, y puede haber muchas instancias de esta misma clase que cada instancia será tendrá un juego único de las variables que pertenecen a esta. Por el contrario las variables que defines fuera de la declaración de la clase, son variables que no tienen ninguna relación con las instancias de la clase del formulario. Cuando liberas una instancia de una clase, esta liberará toda la memoria reservada para esta clase, esto incluye a los campos, o variables pertenecientes a la clase. La variable que esta fuera de la clase definida en la unit, se creará cuando se utilice por primera vez la unit y se liberará cuando finalice la aplicación.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
OK, me pareció ocurrente publicar la duda que me había quedado en otro hilo para que algún otro usuario que la tenga la pueda encontrar fácilmente.
Muy bien, muchas gracias otra vez delphi.com.ar. Saludos. |
#4
|
||||
|
||||
Has utilizado pascal alguna vez antes de delphi?, bueno, si no, quizas has utilizado C.
Resulta que una variable de tipo objeto, es en realidad, un apuntador al objeto. Es decir, si declaro una variable como Código:
var Form1 : TForm1; Ahora..., el formulario en si, que es una instancia de la clase, residirá en el Heap (monton) y su memoria se reserva al llamar al constructor de la clase y se libera al llamar al destructor. Código:
// reserva de memoria Form1 := TForm1.Create(Application); operaciones... // liberación de memoria Form1.Free;
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
||||
|
||||
Exacto... cuando inicia la aplicación recorre todos los Uses de las units del DPR, y así sucesivamente...
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|