Definición
API
Es importante, cuando se está trabajando con memoria, cuáles son las funciones que permiten obtener y liberar memoria, y los errores comunes al utilizar estas herramientas
malloc()
La utilización de la función malloc()
es bastante sencilla se le pasa la cantidad de bites que es necesaria reservar en el heap y si hay espacio en el mismo devuelve un puntero al nuevo espacio reservado, en caso de fallar devuelve un NULL
Si bien esta forma de usar malloc puede parecer sencilla hay que prestar mucha atención a la hora de utilizarla porque puede generar varios tipos de errores
malloc()
devuelve un puntero a un bloque de memoria de por lo menos size bytes adecuadamente alineado al cualquier tipo de datos que pueda contener el bloque. En la práctica esta aliniamiento depende de la arquitectura- 32 bits:
malloc()
devuelve valores de direcciones múltiplos de - 64 bits:
malloc()
devuelve valores de direcciones múltiplos de
- 32 bits:
- Devuelve
NULL
si algo salió mal y setea errno - No inicializa el bloque de memoria, este último se puede solucionar usando
calloc()
free()
De la misma forma en que la memoria es creada una ve que deja de utilizarse debe ser liberada, al igual que en la contabilidad el debe tiene que balancear si se ha reservado espacio para alguna cantidad free()
ptr
debe ser un bloque que devolviómalloc()
,calloc()
orealloc()
. De no ser así el comportamiento defree()
está indefinidofree()
no avisa si algo salió mal