...un ''
Objeto '' es la expresión concreta, fáctica de una Clase.
La
Clase es un modelo abstracto, por lo tanto
en sí mismo inutilizable en el código. Para que la
Clase pueda ser utilizada en el código, debe concretarse mediante una forma concreta: el
Objeto precisamente.
El
Objeto, sin embargo, para que exista, debe ser creado. La palabra clave para crear un
Objeto -
por código - es generalmente "
New ".
Pero el
Objeto, para poder ser creado, necesita una sustancia también concreta: la memoria.
Por lo tanto, la creación de
Objeto presupone el destino de parte de la memoria a la creación del
Objeto. Esta parte de la memoria debe estar destinada
exclusivamente a la estructura del Objeto, ya que, si no fuera
exclusiva, el sistema podría utilizar las celdas de esta memoria para otros usos.
......imagínese, por ejemplo, qué desastre sería, si después de asignar un valor a una variable, el sistema, con el fin de realizar algunas otras operaciones, sobrescribiera las celdas de memoria donde se había escrito el valor de aquella variable !!!
La asignación exclusiva de una porción de memoria, para escribir datos (que es exactamente lo que sucede cuando se crea un
Objeto), se dice "
to allocate" (no se si existe una palabra igual en español; en italiano es "
allocare").
La asignación de memoria puede ser automática o arbitraria. Automática es la asignación realizada por el sistema sobre la base del tamaño
predeterminado de la memoria a ocupar (por ejemplo, el tipo de datos
Short de Gambas ocupará siempre 2 bytes de memoria. Esto significa que el sistema reserva
automáticamente dos bytes de memoria).
La liberación de la parte de la memoria reservada, relativa a una variable
automática, se hará también de forma
automática por el sistema.
La asignación arbitraria se produce, por ejemplo, con la función "Alloc()", donde se debe/puede especificar
por codigo el número de bytes de memoria a ocupar, a reservar.
Cuando el sistema asigna (de manera automática o arbitraria) una porción de memoria, él sustrae esta parte de memoria del uso para otros usos. Esa parte de la memoria permanece
destinada,
dedicada solo y
exclusivamente al propósito para el cual fue asignada.
Por lo tanto, para que el sistema pueda volver a utilizar esa porción de memoria anteriormente reservada, debe ser liberada
en las modalidades previstas por el lenguaje de programación utilizado.
Cerrar un programa, todavía teniendo porciones de memoria reservadas para él, da lugar a un error "
allocation(s) non freed ".
Hagamos un ejemplo abstracto y extremo: imaginemos que todavía tenemos a disposición solamente 1000 bytes de memoria, y que nuestro programa los ha ocupado todos (reservados para sí). Cuando cerramos el programa, si no liberamos aquella parte de memoria anteriormente reservada (...es decir si no volvemos a poner la memoria a disposición de otros programas), nuestro ordenador quedaría bloqueado, porque tendría toda la memoria reservada, inutilizable !
......no liberaste 2909 asignaciones de memoria que tu programa había reservado anteriormente para su recursos.