Está en la página 1de 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 RESPUESTA
En la gestin dinmica de memoria Qu utilidad tiene la funcin Malloc ()?

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.


Establezca la diferencia relacionadas con el operador sizeof entre las dos instrucciones
de cdigo siguientes:
Instruccin 1.
valor = (float * ) malloc (10 * sizeof (float));
Instruccin 2.
La funcin malloc sirve para solicitar un bloque
de memoria del tamao suministrado como
parmetro. Devuelve un puntero a la zona de
memoria concedida:
Void* malloc (unsigned numero_de_bytes);
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.

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 ().

free(numero);

Indique la instruccin de cdigo utilizando la sintaxis de C++ para la asignar memoria
dinmica a un variable apuntador de tipo float llamada cdigo a travs del operador
New.

Para asignar memoria dinmicamente en C++ se
utilizan los operadores new y delete. El operador
new reserva memoria para un tipo de datos
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:
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.


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++.



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 Cdigo Documentacin y Resultados
1 void main(){


2 int a=10;


3 int *x, **y, ***z ;


4 *x=NULL,**y=NULL,***z=NULL;


5 clrscr ();


6 x = &a;


7 *x = 120;


8 y = &x ;


9 **y += *x;


10 z = &y;


11 ***z += **y + *x;


12 cout << "El valor de a es:"<<a;

Cul es el resultado de a?

13 cout << "El valor de *x es:"<<*x;

Cul es el resultado de *x?

14 cout <<"El valor de **y es:"<<**y;

Cul es el resultado de **y?

15 cout <<"El valor de ***z es:"<<***z;

Cul es el resultado de ***z?

16 getch ();}

También podría gustarte