Want to make creations as awesome as this one?

Transcript

M.T.I. jESSICA AYALA SANTANA

manejo de memoria

XX/XX/20XX

'Todas las variables, arreglos y objetos en general, tienen una duración determinada en el transcurso de un programa. Son creados y destruidos para su uso y después para que la memoria sea liberada; para que la utilicen otros objetos.

TIPOS

memoria estática

memoria dinámica

Los objetos son creados en ese momento y destruidos al final del programa. Mantienen la misma localización en memoria durante todo el transcurso del programa.

Estos objetos tienen asignada la misma dirección de memoria desde el comienzo hasta el final del programa.

Su tamaño (número de bytes necesarios para su almacenamiento) DEBE ser conocido en tiempo de compilación.

La forma más fácil de almacenar el contenido de una variable en memoria en tiempo de ejecución es en memoria estática o permanente a lo largo de toda la ejecución del programa. No todos los objetos (variables) pueden ser almacenados estáticamente.

ESTÁTICA

La memoria estática es la que se reserva al momento de compilación antes de comenzar a ejecutarse el programa.

Es la utilizada por variables globales y las declaradas de tipo static.

MEMORIA ESTÁTICA

Los objetos correspondientes a procedimientos o funciones recursivas, ya que en tiempo de compilación no se sabe el número de variables que serán necesarias.

No pueden almacenarse en memoria estática:

Las estructuras dinámicas de datos tales como listas, árboles, etc. ya que el número de elementos que las forman no es conocido hasta que el programa se ejecuta.

MEMORIA ESTÁTICA

Se adapta mejor a las necesidades de cada caso pero en contrapartida es un poco más complejo de programar.

Las reservas de memoria dinámica se hacen en tiempo de ejecución después de leer los datos y de conocer el tamaño exacto del problema a resolver.

DINÁMICA

El programador es el que solicita memoria para crear los objetos y es responsable de liberar la memoria cuando ya no la necesita para ser reutilizada.

Almacenamiento libre

MEMORIA DINÁMICA

.ANÁLISIS

Supongamos que nuestro programa debe manipular estructuras de datos de longitud desconocida. Un ejemplo simple podría ser el de un programa que lee las líneas de un archivo y las ordena. Por tanto, deberemos leer un número indeterminado de líneas, y tras leer la última, ordenarlas.

.ANÁLISIS

Una manera de manejar ese ``número indeterminado'', sería declarar una constante MAX_LINEAS, darle un valor vergonzosamente grande, y declarar un array de tamaño MAX_LINEAS. Esto, obviamente, es muy ineficiente. Nuestro programa no sólo quedaría limitado por ese valor máximo, sino que además gastaría esa enorme cantidad de memoria para procesar hasta el más pequeño de los ficheros.