Gestión de memoria: Estática, automática, dinámica y estructuras de datos
irollx31 de Agosto de 2014
808 Palabras (4 Páginas)425 Visitas
Manejo de memoria
Memoria: Es una zona de almacenamiento organizada en unidades individuales (celdas). La acción de guardar información en memoria se llama “Acceso de escritura” y a la acción de recuperar la información se le llama “Acceso de lectura” y estos accesos son coordinados por la Unidad de Control.
Todas las variables, arreglos y objetos en general tienen una duración determinada durante el transcurso de un programa, esto quiere decir que son creados y destruidos de acuerdo a la ejecución del programa.
1.-Memoria Estática: Son aquellas en las que se asigna una cantidad fija de memoria cuando se declara la variable. Se utiliza para las variables globales y las declaradas como estáticas, tales objetos tienen asignada la misma dirección de memoria desde el comienzo hasta el final del programa.
• Variables globales
• Variables static
2.-Memoria Automática: Es la utilizada por los argumentos y las variables locales en una función o procedimiento, cada ejecución de este crea tales objetos y son destruidos al salir de ellos.
• Argumentos
• Variables locales
3.-Memoria Dinámica: Son aquellas cuya ocupación de memoria puede aumentar o disminuir en tiempo de ejecución. Es también llamado almacenamiento libre y en estos casos el programador solicita memoria para almacenar un objeto y es el responsable de liberar tal memoria para que pueda ser reutilizada por otros objetos.
La operación de reservar y liberar memoria para variables globales estáticas o globales son realizadas de modo implícito por el programa, la única que realiza el programador directamente es la de reservar memoria de forma dinámica.
Memoria estática: Es la memoria que se reserva en el momento de la compilación antes de comenzar a ejecutarse el programa. Los objetos mantienen la misma localización en memoria durante todo el transcurso del programa. Los objetos administrados de este modo son variables globales, variables static de funciones y miembros static de clases y literales de cualquier tipo.
Memoria dinámica: La reserva de memoria dinámica se hace en tiempo de ejecución después de leer los datos y de conocer el tamaño exacto del problema. Como consecuencia se adapta mucho mejor a las necesidades en cada caso. El sitio donde se almacenan los objetos se denominan en ingles heap o free store traducido como montículo o memoria libre, y el sitio preciso donde se encuentre depende del compilador y el tipo de puntero utilizado. La creación y destrucción de los objetos está en manos del programador a través de los operadores new y delete.
Ventajas de utilizar memoria dinámica vs memoria estática La memoria dinámica sirve para que los programadores se adapten siempre al tamaño del problema que tienen que resolver sin desperdiciar recursos de memoria y esto se traduce en una mayor eficiencia en la ejecución de los programas, las ventajas de utilizar memoria dinámica se valoran mejor en comparación con la utilización de la reserva de la memoria estática.
Creación del los Objetos Los objetos locales son creados al entrar en la función que los declara. Los globales son creados al iniciarse en programa. La memoria se reserva explícitamente con el operador new.
Duración de los objetos Los objetos locales se destruyen al salir de la función en que son creados. Los globales se destruyen al salir del programa. Los objetos son destruidos explícitamente con el operador delete. (En Java la función la realiza el recolector de basura automáticamente).
Stack (pila): Pila = colección ordenada de elementos homogéneos en la que sólo se pueden añadir y eliminar elementos por el principio de la misma (cabecera) filosofía LIFO
Aplicaciones
• Estructuras auxiliares en numerosos algoritmos y esquemas de programación:
o Recorridos (profundidad)
...