![]() |
Erstellt von Armando gordillo9610
vor mehr als 8 Jahre
|
|
Reflexiones preliminares :hasta ahora se hemos trabajado con variables cuyo tamaño en memoria conocemos.char ---> 1 byteint ----> 4 bytesfloat ------> 4 bytesdouble ----> 8 bytes
Problema:Encontrar el máximo número dentro de un conjunto de números ingresados por el usuario.// No sabemos cuantos números deseará ingresar el usuario por eso se decidirá en el tiempo de ejecución.Solución:Memoria dinámica En tiempo de ejecución. Se debe de indicarle al sistema operativo que voy a precisar más memoria y cuánta.
malloc: Memory Allocation Allocation = Asignaciónmalloc: Aridadvoid* malloc(cantBytes) Se le piden cantBytes al SO. Devuelve un puntero a donde comienza dicha memoria o NULL sino. malloc: Ejemploint cant;scanf("%d",&cant);int* arr;arr = (int*) malloc(cant*sizeof(int));int i;for(i=0; i<cant; i++){scanf("%d",&arr[i]);}int* arr; arr = (int*) malloc(cant*sizeof(int)); if(arr==NULL){ printf(“Zarpaste en memoria, loquito!”); exit(EXIT_FAILURE); } free(arr)
calloc: Clear Allocationvoid* calloc(cantElems, bytesElem) Reserva memoria para cantElems de tamaño bytesElem, es decir, cantElems*bytesElem bytes de memoria. Sino, devuelve NULL.realloc: Re-allocationvoid* realloc(void* ptr, cantBytes) Reasigna cantBytes de memoria y copia lo apuntado por ptr a la nueva dirección de memoria.ejemplo://arr = [4, 25, 35] arr= (int*) realloc(arr, 4*sizeof(int)); arr[3] = 72 //arr = [4, 25, 35, 72]Resumen-malloc para pedir memoria. -calloc para pedir memoria inicializada en 0. -realloc para reasignar memoria (potencialmente pidiendo más). -free para liberar memoria después de su uso.
Möchten Sie kostenlos Ihre eigenen Notizen mit GoConqr erstellen? Mehr erfahren.