Sunteți pe pagina 1din 2

PIE 2018

1. Memoria dinámica.
Se llama memoria dinámica, a la memoria que se reserva en tiempo de ejecución. Su principal
ventaja frente a la estática, es que su tamaño puede variar durante la ejecución del programa.

El uso de memoria dinámica es necesario cuando no se sabe exactamente el número de


datos/elementos a tratar.

En C, el programador es encargado de liberar esta memoria cuando no la utilice más.

1.1 Malloc.

La función malloc llama al sistema operativo para obtener más memoria cuando es necesario.
Esta función reserva un bloque de memoria y devuelve un puntero void que apunta al inicio del
mismo. Tiene la siguiente definición:
void *malloc(size_t size);

El parámetro size especifica el número de bytes a reservar. En caso de que no se pueda realizar
la asignación, la función devuelve NULL, lo que permite saber si hubo errores en la asignación de
memoria.

1.2 Calloc.
La función calloc también llama al sistema operativo para obtener más memoria cuando es
necesario, pero a diferencia de malloc, ésta reserva un bloque de memoria, lo inicializa a bytes
con 0 y devuelve un puntero void que apunta al inicio del mismo. Tiene la siguiente definición:
void *calloc(size_t nobj, size_t size);

El parámetro nobj indica el número de elementos a reservar, y size el tamaño (en bytes) de
cada elemento.
1.3 Realloc.
La función realloc redimensiona el espacio asignado de forma dinámica anteriormente a un
puntero. Tiene la siguiente definición:
void *realloc(void *p, size_t size);

Donde p es el puntero a redimensionar, y size el tamaño en bytes que tendrá el nuevo bloque.
Si el nuevo tamaño es mayor, el espacio nuevo no se inicializa y el espacio viejo queda igual que
antes. Si el tamaño nuevo es menor, el contenido en el bloque no cambia hasta el último
elemento del nuevo bloque.
Si el puntero que se le pasa tiene el valor nulo (NULL), esta función actúa como malloc. Si la
reasignación no se pudo hacer con éxito, la función devuelve un puntero nulo, dejando intacto el
puntero que se pasa por parámetro.

1.4 Free.
La función free sirve para liberar memoria que se asignó dinámicamente mediante las
funciones anteriores. Si el puntero que se le pasa es nulo, free no hace nada. Tiene la siguiente
definición:
void free(void *p);
El parámetro p es el puntero a la memoria que se desea liberar.

S-ar putea să vă placă și