You are on page 1of 6

TRABAJO COLABORATIVO N0 1 Memoria dinmica Apuntadores Gestin dinmica de memoria Operadores y funciones en la gestin dinmica de memoria Curso: 301305_1

Presentado por: HENRY ALEXANDER GUTIERREZ FUENTES COD: 4.144.474 Tutor: HERMES MOSQUERA

UNIVERSIDAD NACIONAL ABIERTA Y ADISTANCIA UNAD FACULTAD DE INGENIERIA DE SISTEMAS ESTRUCTURA DE DATOS BOGOTA, ABRIL 2012

INTRODUCCIN En este tema se estudiarn las posibilidades que ofrece el Lenguaje C a la hora de trabajar dinmicamente con la memoria dentro de los programas, esto es, reservar y liberar bloques de memoria al momento de ejecutar un programa. Adems en este tema se introducir el concepto de tipo abstracto de dato y la forma de dividir un gran programa en otros ms pequeos. Tambin se estudiaran conceptos claves de estructuras de datos y sus aplicaciones.

OBJETIVOS Aplicar y profundizar en los fundamentos terico-prcticos de la Unidad 1 relacionada con la aplicacin de las estructuras y la gestin dinmica de memoria, por medio de pequeos proyectos de aplicacin desarrollados para un entorno real. Desarrollar programas que permitan fortalecer las buenas prcticas de programacin dando aplicabilidad a las estructuras lineales a travs del desarrollo de supuestos semnticos en entornos reales. Dar aplicabilidad al uso y manejo de las variables apuntadores, funciones y operadores de C++ en el manejo de la memoria de forma dinmica, as integrar estos conceptos con las operaciones que se pueden realizar por medio de un men de opciones.

1. Conceptualizacin de la memoria dinmica. De acuerdo a la conceptualizacin del mdulo referente a la unidad 1 y a las consultas bibliogrficas en la Biblioteca virtual de la UNAD, de respuesta en la columna de la derecha a los siguientes interrogantes: ENUNCIADO En la gestin dinmica de memoria Qu utilidad tiene la funcin Malloc ()? RESPUESTA Se encuentra en la llibreria stdlib.h, devuelve un puntero al primer byte de la parcela o porcin de memoria reservada o un puntero NULL, en caso de no haberse podido reservar el bloque de memoria solicitado. Los argumentos necesarios para la utilizacin de la funcin malloc son: tam: Indica el tamao en bytes del bloque de memoria que se desea reservar. Es muy importante comprobar que el puntero devuelto por malloc() no es un puntero nulo antes de hacer uso de l

Cul es la utilidad del operador sizeof en la gestin dinmica de memoria?

El operador sizeof (tipo_de_dato), nos devuelve el tamao que ocupa en memoria un cierto tipo de dato, de esta manera, podemos escribir programas independientes del tamao de los datos y de la longitud de palabra de la mquina. En resumen si no utilizamos este operador en conjuncin con las conversiones de tipo cast probablemente nuestro programa slo funciones en el ordenador sobre el que lo hemos programado.

La funcin malloc sirve para solicitar un bloque Establezca la diferencia relacionadas con el operador sizeof entre las dos instrucciones de memoria del tamao suministrado como de cdigo siguientes: parmetro. Devuelve un puntero a la zona de Instruccin 1. memoria concedida: Void* malloc (unsigned numero_de_bytes); valor = (float * ) malloc (10 * sizeof (float)); Instruccin 2. El tamao se especifica en bytes. Se garantiza

valor = (float * ) malloc (sizeof (float));

que la zona de memoria concedida no est ocupada por ninguna otra variable ni otra zona devuelta por malloc. Operador sizeof El problema de malloc es conocer cuntos bytes se quieren reservar. Si se quiere reservar una zona para diez enteros, habr que multiplicar diez por el tamao de un entero. El tamao en bytes de un elemento de tipo T se obtiene con la expresin sizeof ( T) El tamao de un char siempre es 1 (uno). Funcin free Cuando una zona de memoria reservada con malloc ya no se necesita, puede ser liberada mediante la funcin free.void free (void* ptr); ptr es un puntero de cualquier tipo que apunta a un rea de memoria reservada previamente con malloc. Si ptr apunta a una zona de memoria indebida, los efectos pueden ser desastrosos, igual que si se libera dos veces la misma zona.

free(numero);
Si se requiere liberar la memoria previamente asignada en un programa codificado en C++ se puede hacer uso de: Indique la instruccin de cdigo necesaria en utilizando la sintaxis de C++ para liberar memoria dinmica previamente asignada a una variable apuntador de tipo entero llamada nmero, a travs de la funcin Free (). Para asignar memoria dinmicamente en C++ se Indique la instruccin de cdigo utilizando la sintaxis de C++ para la asignar memoria utilizan los operadores new y delete. El operador dinmica a un variable apuntador de tipo float llamada cdigo a travs del operador new reserva memoria para un tipo de datos New. especfico y retorna su direccin, o retorna NULL en caso de no haber conseguido suficiente memoria; y el operador delete permite liberar la memoria reservada a travs de un apuntador. La sintaxis de ambos operadores es como sigue:

Haga una consulta en la biblioteca virtual de la UNAD para indicar en pocas palabras la importancia de los apuntadores en la programacin de C++.

Para reservar y liberar un solo bloque: <apuntador> = new <tipo de dato> delete <apuntador> Para reservar y liberar varios bloques (un arreglo): <apuntador> = new <tipo de dato>[<nmero de bloques>] delete [] <apuntador> El tipo del apuntador especificado del lado izquierdo del operador new debe coincidir con el tipo especificado del lado derecho. De no ser as, se produce un error de compilacin. El uso de apuntadores en C y C++ es muy importante debido a que permite hacer los programas ms eficientes y ms flexibles. Cuando se declara una variable, el compilador reserva un espacio de memoria para ella y asocia el nombre de esta a la direccin de memoria desde donde comienzan los datos de esa variable. Las direcciones de memoria se suelen describir como nmeros en hexadecimal. Un apuntador es una variable cuyo valor es la direccin de memoria de otra variable. Se dice que un apuntador apunta a la variable cuyo valor se almacena a partir de la direccin de memoria que contiene el apuntador. Por ejemplo, si un apuntador p almacena la direccin de una variable x, se dice que p apunta a x.

2. Aplicacin de los apuntadores. Analice el siguiente cdigo que es una parte de un programa como aplicacin de apuntadores a apuntadores, complete las lneas de cdigo que faltan, complelo y lo ejecuta y as confirma la salida en pantalla, documente cada una de las lneas de cdigo y exprese el resultado que arrojan las variables: a, *x, **y, ***z, para lo cual se debe realizar y anexar a este punto la prueba de escritorio. Lnea 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Cdigo void main(){ int a=10; int *x, **y, ***z ; *x=NULL,**y=NULL,***z=NULL; clrscr (); x = &a; *x = 120; y = &x ; **y += *x; z = &y; ***z += **y + *x; cout << "El valor de a es:"<<a; cout << "El valor de *x es:"<<*x; cout <<"El valor de **y es:"<<**y; cout <<"El valor de ***z es:"<<***z; getch ();} Cul es el resultado de a? Cul es el resultado de *x? Cul es el resultado de **y? Cul es el resultado de ***z? Documentacin y Resultados

You might also like