La memoria dinámica permite asignar memoria de forma variable durante la ejecución del programa. Se reserva en la zona libre de memoria principal llamada heap. Su principal ventaja es que el tamaño puede variar, solucionando problemas cuando no se conoce el número de datos por adelantado. El programador es responsable de liberar la memoria dinámica cuando ya no se necesite más mediante funciones como free(), malloc(), calloc() y realloc().