Cuando un programa termina, ¿qué sucede con la memoria asignada usando malloc que no está libre?

Di que tengo el siguiente programa

<code>#include <stdio.h>
#include <stdlib.h>

int main(void) 
{
    int * i;

    if ((i = malloc(sizeof(int) * 100)) == NULL) {
        printf("EROOR: unable to allocate memory \n");
        return -1;
    }

    /* memory is allocated successfully */

    /* memory is not free'ed but program terminates */
    // free(i);

    return 0;
}
</code>

El programa anterior llamamalloc para asignar algo de memoria y no llamafree para desasignarlo. Y el programa termina sin desasignar la memoria.

Valgrind detecta claramente una pérdida de memoria.

<code><snap>
==14209== HEAP SUMMARY:
==14209==     in use at exit: 400 bytes in 1 blocks
==14209==   total heap usage: 1 allocs, 0 frees, 400 bytes allocated
==14209== 
<sanp>
==14209== LEAK SUMMARY:
==14209==    definitely lost: 400 bytes in 1 blocks
==14209==    indirectly lost: 0 bytes in 0 blocks
==14209==      possibly lost: 0 bytes in 0 blocks
==14209==    still reachable: 0 bytes in 0 blocks
==14209==         suppressed: 0 bytes in 0 blocks
==14209== 
==14209== For counts of detected and suppressed errors, rerun with: -v
==14209== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
</code>

Pregunta:

Cuando el programa termina, lo que sucede con la memoria que fue asignada pero nofree'¿re?

Actualización: tenga en cuenta que este código se está ejecutando en un sistema operativo diferente, por ejemplo, windows, linux, solarix, macos, etc. ¿Existe alguna diferencia en el comportamiento de este código durante su terminación?

Respuestas a la pregunta(5)

Su respuesta a la pregunta