Clase 3 Memoria Dinamica

Páginas: 11 (2506 palabras) Publicado: 8 de marzo de 2015
1.4.3 Administración de la Memoria Dinámica
El Almacén Libre
Asignación de Memoria
Liberación de Memoria
Constructores Copy
Errores Comunes
Agotamiento de la Memoria
Sobrescritura
Uso de la Memoria Liberada
Liberación Duplicada de la Memoria
El Almacén Libre
Cada programa de C++ tiene lo que se llama el "almacén libre". El almacén libre, que a veces se le llama "heap" es un área de la memoria deun programa que se utiliza dinámicamente. Usar memoria dinámicamente significa que la cantidad de memoria requerida para una tarea es especificada en el tiempo de ejecución, en lugar del tiempo de compilación. Por ejemplo, imagina un programa que almacena en un arreglo una lista de números introducidos por el usuario. Si el tamaño máximo de la lista de números se conoce con anticipación, hay pocadificultad implicada en declarar un arreglo del tamaño conveniente. Pero, ¿qué pasa si el tamaño de la lista es desconocido? En esta situación podríamos solicitar al usuario que introduzca primero el tamaño de la lista de números. Después, usando memoria dinámica, podemos crear un arreglo de igual tamaño.
Las variables creadas en el almacén libre tienen dimensión dinámica. La dimensión de unavariable describe cuánto tiempo permanece la variable alrededor en un programa. Otro término usado comúnmente en lugar de dimensión es ciclo de la vida. Las variables locales en funciones tienen dimensión local, se crean cuando se llama una función y se destruyen cuando la función regresa. Las variables globales, que tienen dimensión estática son creadas y están disponibles a través del ciclo devida completo de un programa. Una variable con dimensión dinámica tiene su ciclo de vida especificado explícitamente por el programador. El programador publica una declaración para crear la variable y una declaración para destruir la variable. Esto proporciona mucha flexibilidad en el tipo de soluciones que los programadores puedan crear. Piense de nuevo en la lista del ejemplo de los números dondesolicitamos al usuario el tamaño de la lista. Existe una mejor solución que se aprovecha de la dimensión dinámica de las variables creadas en el almacén libre. En vez de pedir al usuario que incorporare el tamaño de la lista, asumimos que el tamaño de la lista no excederá de cien elementos. Usando la memoria dinámica, creamos un arreglo de cien elementos. Si, durante el proceso de entrada deinformación, un usuario incorpora más de cien elementos, creamos dinámicamente un arreglo de doscientos elementos. Copiamos los primeros cien elementos del primer arreglo al nuevo arreglo, y después insertamos los números. Después de realizar esto, el primer arreglo ya no necesario y regresamos su memoria al almacén libre. Repetimos este proceso de la memoria asignada dinámicamente cada vez que lacapacidad de nuestro arreglo se excede.
Asignación de Memoria
El proceso de obtener memoria del almacén libre es llamado asignación de memoria. El operador new es usado en C++ para asignar memoria dinámicamente.
1:
2:
// Allocate a single integer
int* ptr = new int;
Listado 1  El operador new
El operador new siempre regresa una dirección de memoria. Recuerda, los apuntadores almacenan direcciones dememoria, por lo que nosotros debemos guardar el valor de regreso del operador new en el apuntador. Usando un apuntador, podemos tener acceso indirectamente y modificar la variable que acabamos de crear.
1:
2:
3:
4:
5:
6:
// Allocate a single integer
int* ptr = new int;
*ptr = 10;

cout << "Address: " << ptr << endl;
cout << "Value: " << *ptr << endl;
Listado 2  Uso de una variable del almacénlibre
El operador new trabaja para todos los tipos de datos. Podemos asignar dinámicamente datos enteros, reales, cadenas de caracteres y otras clases creadas por el usuario. El listado 3 muestra una asignación de muchos tipos diferentes de datos.
1:
2:
3:
4:
5:
6:
int* i_ptr = new int;
char* c_ptr = new char;
bool* b_ptr = new bool;
float* f_ptr = new float;
double* d_ptr = new double;
string*...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Memoria dinamica
  • Memoria dinamica
  • Memoria Dinamica
  • Memoria Dinamica
  • Dinámicas de clase
  • CLASES DE MEMORIAS
  • 3 Memoria
  • Memoria 3.o

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS