Quizas ver primero: Pointers en C
# Asignacion de Memoria Dinamica para uso de punteros en C
Aqui tocaremos algunos conceptos de la Memoria Dinamica y como nos sirve para trabajar con los punteros en C. Por tanto, primero revisar Pointers en C.
La memoria dinamica es un tipo de memoria que podemos asignar dinamicamente al momento de que nuestro programa esta corriendo (runtime). Esta memoria dinamica viene del heap y es memoria libre la cual podemos reservar para nuestro trabajo con punteros.
Para reservar y utilizar esta memoria debemos usar funciones especiales que estan contenidas dentro de la libreria ‘stdlib.h’. Por tanto, necesitamos incluirla nuestro header.
Dentro de esta nueva libreria tenemos algunas funciones muy utiles para trabajar con esta memoria dinamica:
- malloc(int bytes). Sirve para reservar un espacio vacio en memoria. Tiene como parametro un int que es la cantidad de bytes que estaran reservados y devuelve un pointer (*) hacia el primer byte de ella.
- free(). Sirve para liberar manualmente la memoria reservada por malloc despues de ser utilizada.
Veamos unos ejemplos de memoria estatica (stack) vs memoria dinamica (heap).
| |
Al introducir estas funciones es normal que tengamos problemas para debuggear y darnos cuenta de si tenemos o no leaks de memoria. Para eso, programas especiales como ____ nos sirven.
Siguiente: