Programación en C/Manejo dinámico de memoria

De Wikilibros, la colección de libros de texto de contenido libre.

Esta sección no está lista si tienes algún conocimiento sobre este tema por favor, regístrate y contribuye con nuestro libro.

Breve introducción.

¿Qué es memoria dinámica?

¿Qué es memoria estática?

¿Diferencias, ventajas, desventajas y usos?

El lenguaje c y la memoria dinámica

¿Malloc ?

¿Realloc ?

¿Que es un buffer?

¿Cuáles son las buenas prácticas?


La memoria dinámica en C es creada a travás de funciones definidas en la librería estándar de C, estas funciones son malloc, calloc, realloc y free.

void *malloc(size_t size);

// Esta función sirve para asignar memoria de forma dinámica. Asigna tantos bytes como
// se indica el parámetro size. funciiona de la forma siguiente:

// int *i;
// i = (int *)malloc(sizeof(int));

// El operador (int *) sirve para hacer la conversión de puntero genérico a puntero entero,
// ya que la funcion retorna un puntero void
// Si la asignación no se ha podido realizar, devuelve el valor nulo.
void *calloc(size_t nmemb, size_t size);

// Esta función funciona de modo similar a malloc, pero está hecha para asignar espacio a
// matrices, nmemb indica el número de elementos que ésta tendrá, y size el tamaño de cada
// elemento.
void *realloc(void *ptr, size_t size);

// Esta función redimensiona el espacio asignado de forma dinámica anterirmente a un puntero.
// Si el puntero tiene el valor nulo ésta actúa como malloc.
// Si la reasignación no se pudo hacer con éxito, devuélve un puntero nulo, dejándo
// intacto el puntero que se pasa por parámetro.
void free(void *ptr);

// Este procedimiento recibe como parámetro un puntero al que se le ha asignado memoria de forma
// dinámica, y sirve para  liberar esa memoria reservada.
Herramientas personales