Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Memoria Dinamica en C PDF
Memoria Dinamica en C PDF
Herman Schinca
Clase 13
10 de Mayo de 2011
Reflexiones Preliminares
Hasta ahora trabajamos con variables cuyo
tamaño en memoria conocemos:
Char → 1 byte
Int → 4 bytes
Float → 4 bytes
Double → 8 bytes
Int arr[20] → ? bytes
Reflexiones Preliminares
Sí.
Allocation = Asignación
Allocation ≠ Alocar
void* malloc(cantBytes)
int cant;
scanf("%d",&cant);
int* arr;
arr = (int*) malloc(cant*sizeof(int));
int i;
for(i=0; i<cant; i++){
scanf("%d",&arr[i]);
}
malloc: Ejemplo
¿Y eso es todo?
int* arr;
arr = (int*) malloc(cant*sizeof(int));
if(arr==NULL){
printf(“Zarpaste en memoria,
loquito!”);
exit(EXIT_FAILURE);
}
...
malloc: Ejemplo
Claramente no.
free(arr)
¡Arreglo de arreglos!
int** arr;
arr = (int**) malloc(filas*sizeof(int*));
//Chequeo si arr==NULL
int i;
for(i=0; i<filas; i++){
arr[i] = (int*)
malloc(cols*sizeof(int));
//Chequeo si arr[i]==NULL
}
Matrices: Libero Memoria
free(arr);
miniEjercicio
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.
C'est fini
¿Questions?