Когда программа завершает работу, что происходит с памятью, выделенной с помощью 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 и т. Д. Есть ли какие-либо различия в поведении этого кода во время его завершения?