Computacion
Punteros
Profesora: Francia Jiménez
Memoria Estática
Forma fácil de asignar memoria a una variable El tamaño es constante a través deltiempo de ejecución.
–
Conocido y requerido antes de la ejecución.
Es asignada en la compilación del programa.
Problema
¿Qué pasa cuando queremos usar estructurascon longitud no definida? Ejemplo:
Leer el numero de líneas de un archivo y ordenarlas El numero de líneas es indeterminado
Problema
Solución 1: Declarar una cantidad muy grande denumero de líneas. Solución ineficiente en cuanto al uso de memoria.
Memoria Dinámica
Definición: Espacio de almacenamiento o memoria que no es definida en tiempo decompilación, pero es definida en tiempo de ejecución. Idea: a medida que se necesita memoria, esta es pedida al S.O. Requiere: Utilización de punteros, forma para manejar la memoriadinámica en el programa.
Memoria Dinámica: Primitivas
Malloc: Solicita memoria al S.O.
tipo *nombrePuntero; nombrePuntero=malloc(8*sizeof(char));
Memoria Dinámica: Primitivas
Realloc: Modifica el tamaño de memoria solicitado al S.O.
tipo *nombrePuntero; nombrePuntero=malloc(8*sizeof(char)); /*Si necesitamos 10 casillas*/nombrePuntero=realloc(nombrePuntero,10*sizeof(char)) ;
Memoria Dinámica: Primitivas
Free: Libera la memoria solicitada al S.O.
tipo *nombrePuntero; free(nombrePuntero);
Ejercicio
Crear unprograma que permita ingresar una cantidad indeterminada de números de telefonos
–
–
A) Pidiendo la cantidad de el numero de teléfonos B) Sin pedir la cantidad de numero de teléfonos alusuario
Problema
Solución a int i, tamano; int *telefonos; // o bien: int telefonos[] telefonos = NULL; tamano = preguntar_tamano(); telefonos = malloc (tamano); for (i=0;i
Regístrate para leer el documento completo.