MEMORIA DINÁMICA

En muchas aplicaciones no se conoce con anticipación la cantidad de memoria necesaria para las variables a utilizar en un programa.

No se conoce los datos que se procesarán

Ubicarlos en diversas posiciones de la memoria para ejecutarlo mas velozmente.

Asignación dinámica de memoria

El compilador divide a la memoria en tres zonas:

Memoria

Función malloc()

Asignar memoria libre para la cantidad de espacio requerido.

Prototipo

void *malloc(unsigned int tamaño_requerido);

tamaño_requerido: cantidad de bytes solicitados

Devuelve un puntero a void que contiene la dirección de memoria en donde ésta ubicado el bloque asignado por ella. En caso de que no exista lugar disponible en la memoria para asignar dicha solicitud retorna un puntero nulo.

Un puntero a void es un puntero que no apunta a ningún tipo específico, éste se incrementa en un byte. Normalmente se debe realizar un casting de dicho puntero.

Función free()

Libera un bloque de memoria pedido por la función malloc().

Prototipo

void free(void *bloque_pedido);

bloque_pedido: dirección del bloque de memoria solicitado.

Sizeof

Devuelve el tamaño en bytes de la expresión o del tipo dado.

Sintaxis

sizeof <expresión>

O

sizeof ( <tipo> )
Apunte sobre Memoria dinámica