Sunteți pe pagina 1din 2

2.

1 Manejo de Memoria Esttica


Es la memoria que se reserva en el momento de la compilacin antes de comenzar a ejecutar el programa. Los objetos son creados al iniciar el programa y destruidos al finalizar el mismo. Mantienen la misma localizacin en memoria durante todo el transcurso del programa hasta que son destruidos. Los objetos administrados de este modo son: Variables Static. Variables Globales. Miembros Static de la Clase. Literales de cualquier tipo. El inconveniente de la reserva esttica es que la cantidad de memoria se reserva siempre antes de conocer los datos concretos del problema. Tampoco se adapta bien a la memoria real disponible del ordenador en que se est ejecutando el programa. La forma ms fcil de almacenar el contenido de una variable en memoria en tiempo de ejecucin es en memoria esttica o permanente a lo largo de toda la ejecucin del programa. No todos los objetos (variables) pueden ser almacenados estticamente. Para que un objeto pueda ser almacenado en memoria esttica su tamao (nmero de bytes necesarios para su almacenamiento) ha de ser conocido en tiempo de compilacin. Como consecuencia de esta condicin no podrn almacenarse en memoria esttica:

Los objetos correspondientes a procedimientos o funciones recursivas, ya que en tiempo de compilacin no se sabe el nmero de variables que sern necesarias. Las estructuras dinmicas de datos tales como listas, rboles, etc. ya que el nmero de elementos que las forman no es conocido hasta que el programa se ejecuta.

La asignacin de memoria puede hacerse en tiempo de compilacin y los objetos estn vigentes desde que comienza la ejecucin del programa hasta que termina. En los lenguajes que permiten la existencia de subprogramas, y siempre que todos los objetos de estos subprogramas puedan almacenarse estticamente se aloja en la memoria esttica un registro de activacin correspondiente a cada uno de los subprogramas. Estos registros de activacin contendrn las variables locales, parmetros formales y valor devuelto por la funcin. Dentro de cada registro de activacin las variables locales se organizan secuencialmente. Existe un solo registro de activacin para cada procedimiento y por tanto no estn permitidas las llamadas recursivas. El proceso que se sigue cuando un procedimiento p llama a otro procedimiento q es el siguiente: 1. p evala los parmetros de llamada, en caso de que se trate de expresiones complejas, usando para ello una zona de memoria temporal para el almacenamiento intermedio. Por ejemplo, s la llamada a q es q ((3*5) + (2*2),7) las operaciones previas a la llamada propiamente dicha en cdigo mquina han de realizarse sobre alguna zona de memoria temporal. (En algn momento debe haber una zona de memoria que contenga el valor intermedio 15, y el valor intermedio 4 para sumarlos a continuacin). En caso de utilizacin de memoria esttica sta zona de temporales puede ser comn a todo el programa, ya que su tamao puede deducirse en tiempo de compilacin. 2. q inicializa sus variables y comienza su ejecucin. Dado que las variables estn permanentemente en memoria es fcil implementar la propiedad de que conserven o no su contenido para cada nueva llamada

S-ar putea să vă placă și