Когда программа завершает работу, что происходит с памятью, выделенной с помощью malloc, который не освобожден?

Скажи, у меня есть следующая программа

<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>

Вышеуказанные вызовы программыmalloc выделить память и не вызыватьfree де-распределить это. И программа завершается без выделения памяти.

Valgrind четко обнаруживает утечку памяти.

<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>

Вопрос:

Когда программа завершает работу, что происходит с памятью, которая была выделена, но неfree& APOS; д?

Обновить: Учтите, что этот код выполняется в другой операционной системе - скажем, Windows, Linux, Solarix, Macos и т. Д. Есть ли какие-либо различия в поведении этого кода во время его завершения?

Ответы на вопрос(5)

Ваш ответ на вопрос