Memoria dinamica

Solo disponible en BuenasTareas
  • Páginas : 7 (1552 palabras )
  • Descarga(s) : 0
  • Publicado : 24 de mayo de 2011
Leer documento completo
Vista previa del texto
Instituto Politécnico Nacional

Escuela Superior de Ingeniería Mecánica y Eléctrica
ESIME
UNIDAD ZACATENCO

ACADEMIA DE PROGRAMACION
FUNDAMENTOS DE PROGRAMACION

PROFESOR:
M en C. Enrique Ugalde Miranda

INVESTIGACION DE MEMORIA DINAMICA

ALUMNO Y BOLETA:
ALANIS NEYRA MARIO ANTONIO
2011301255

Grupo: 1C15V

Calificación:

Fecha de Entrega: 25/OCTUBRE/2010CONTENIDO:

INDICE

RESUMEN

INTRODUCCION AL TEMA

OBJETIVO GENERAL

DESARROLLO

CONCLUSIONES

BIBLIOGRAFIA

INDICE:

RESUMEN
1-3
INTRODUCCION
4
OBJETIVO GENERAL
4
DESARROLLO
5-7
CONCLUSIONES
7
BIBLIOGRAFIAS
8

1. Memoria Dinámica

1.1.-Datos estáticos y dinámicos

Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tantose determinan en tiempo de compilación. El ejemplo típico son los arrays.

Tienen el problema de que hay que dimensionar la estructura de antemano, lo que puede con llevar desperdicio o falta de memoria.

Datos dinámicos: su tamaño y forma es variable (o puede serlo) a lo largo de un programa, por lo que se crean y destruyen en tiempo de ejecución. Esto permite dimensionar la estructura dedatos de una forma precisa: se va asignando memoria en tiempo de ejecución según se va necesitando.
Cuando el sistema operativo carga un programa para ejecutarlo y lo convierte en proceso, le asigna cuatro partes lógicas en memoria principal: texto, datos (estáticos), pila y una zona libre. Esta zona libre (o heap) es la que va a contener los datos dinámicos, la cual, a su vez, en cada instante dela ejecución tendrá partes asignadas a los mismos y partes libres que fragmentaran esta zona, siendo posible que se agote si no se liberan las partes utilizadas ya inservibles. (La pila también varía su tamaño dinámicamente, pero la gestiona el sistema operativo, no el programador):

Para trabajar con datos dinámicos necesitamos dos cosas:

1. Subprogramas predefinidos en el lenguaje que nospermitan gestionar la memoria de forma dinámica (asignación y liberación).
2. Algún tipo de dato con el que podamos acceder a esos datos dinámicos (ya que con los tipos vistos hasta ahora solo podemos acceder a datos con un tamaño y forma ya determinados).

1
1.2.-Tipo puntero

Las variables de tipo puntero son las que nos permiten referenciar datos dinámicos.

Tenemos que diferenciarclaramente entre:

1. La variable referencia o apuntadora, de tipo puntero;
2. La variable anónima referenciada o apuntada, de cualquier tipo, tipo que estará asociado siempre al puntero.

Físicamente, un puntero no es más que una dirección de memoria. En el siguiente ejemplo se muestra el contenido de la memoria con un puntero que apunta a la dirección 78AC (16, la cual contiene 6677(16:

Antesde definir los punteros, vamos a recordar como puede darse nombre a tipos de datos propios utilizando la palabra reservada typedef. El uso de typedef (definición de tipo) en C++ permite definir un nombre par un tipo de datos en C++. La declaración de typedef es similar a la declaración de una variable. La forma es: typedef tipo nuevo-tipo.

1.3.-Gestión de la memoria dinámica

Cuandodeclaramos una variable de tipo puntero, por ejemplo int *p; estamos creando la variable p, y se le reservara memoria -estática- en tiempo de compilación; pero la variable referenciada o anónima no se crea. En este momento tenemos:

2

La variable anónima debemos crearla después mediante una llamada a un procedimiento de asignación de memoria -dinámica- predefinido. El operador new asigna un bloque dememoria que es el tamaño del tipo del dato apuntado por el puntero. El dato u objeto dato puede ser un int, un float, una estructura, un array o, en general, cualquier otro tipo de dato. El operador new devuelve un puntero, que es la dirección del bloque asignado de memoria. El formato del operador new es:

puntero = new nombre Tipo (inicializado opcional);

Así: p = new int; donde p es una...
tracking img