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.

