Sie sind auf Seite 1von 2

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 globales, variables estticas de funciones, miembros static de clases y 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 esta ejecutando el programa. Las estructuras de datos estticas: Son aquellas en las que el tamao ocupado en memoria se define antes de que el programa se ejecute y no pue de modificarse dicho tamao durante la ejecucin del programa. Estas estructuras estn implementadas en casi todos los lenguajes.

Su principal caracterstica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un nico valor a la vez, dentro deeste grupo de datos se encuentra: enteros, reales, caracteres, bolanos, enumerados y subrangos (los ltimos no existen en algunos lenguajes deprogramacin) 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) pue den ser almacenados estticamente. Para que un objeto pueda ser almacenado en memoriaesttica 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. Las tcnicas de asignacin de memoria esttica son sencillas. A partir de una posicin sealada por un puntero de referencia se aloja el objeto X, y se avanza el puntero tantos bytes como sean necesarios para almacenar el objeto X. 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 -por ejemplo en FORTRAN-IV, como se puede ver en la figura 4a- se aloja en la memoria esttica un registro de activacin correspondiente a cada uno delos 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 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 ejemplos, 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 memoriatemporal. (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 deutilizacin de memoria esttica sta zona de temporales puede ser comn a todo el programa, ya que su tamao puede deducirse en tiempo de compilacin. Dado que las variables estn permanentemente en memoria es fcil implementar la propiedad de que conserven o no su contenido para cada nueva llamada.
MANEJO DE MEMORIA DINMICA Es tambin llamada almacenamiento libre (freestore) y en estos casos el programador solicita (new) memoria para almacenar un objeto y es responsable de liberarla (delete) para que pueda ser reutilizada por otros objetos. Es aquella que se reserva en tiempo de ejecucin despus de leer los datos y de conocer el tamao exacto del problema a resolver. El sitio don de se almacenan los objetos se le denomina HEAP = MONTCULO pero el sitio preciso don de se encuentra tal montculo depende del compilador y el tipo depuntero utilizado en la reserva de memoria dinmica. Puntero (apuntador): un puntero o apuntador es un tipo especial de variable que almacena el valor de una direccin de memoria la cual puede ser de una variable individual, de un elemento de un arreglo, una estructura u objeto de una clase y se anota de la siguiente manera: Tipo de apuntador + nombre de la variable.
 

Int * Pint; puntero a un entero.

Char * Pchar; puntero de carcter.  Fecha * Pfecha; puntero objeto de la clase fecha. Independientemente del tamao del objeto apuntado por una variable puntero el valor almacenado por esta ser el de una nica direccin de memoria, por este motivo no existen diferencias sintcticas entre punteros a elementos individuales y punteros a elementos a un arreglo o una clase. Sintaxis para requerir y liberar memoria dinmica

Variable individual Reserva de memoria Liberacin de memoria int * a = new int; delete a;

Array de elementos int * a = new int [N]; delete [] a;

Das könnte Ihnen auch gefallen