Manejo Manual de Memoria

Eres tú quien asigna y desasigna la memoria del heap.

Si no lo haces con cuidado, podrían producirse fallos, errores, vulnerabilidades de seguridad y pérdidas de memoria.

Ejemplo en C

Debes llamar a free en cada puntero que asignes con malloc:

void foo(size_t n) {
    int* int_array = malloc(n * sizeof(int));
    //
    // ... lots of code
    //
    free(int_array);
}

La memoria se pierde si la función devuelve un resultado antes de tiempo entre malloc y free: el puntero se pierde y no podemos anular la asignación de la memoria. Peor aún, si se libera el puntero dos veces o si se accede a uno liberado, pueden producirse vulnerabilidades de seguridad de las que otros podrían aprovecharse.