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

Я написал программу на C, содержащую код, выделяющий память, используя функцию malloc(). Если я не освобожу память с помощью функции free(), Ubuntu освободит ее автоматически?

11
задан 14 May 2015 в 13:56

1 ответ

Да.

ядро высвободит все средства, выделенные программой после завершения программы.

Это сделано после do_exit() функция, определяемая в kernel/exit.c завершила свое выполнение; do_exit() само функциональное выполнение могло бы быть инициировано многими событиями, обычно явным exit() syscall, названный программой во время ее регулярного вычисления или неявным exit() syscall, названный программой после ее завершения (когда компилятор C помещает exit() syscall после main() возврат). Другие причины включают прием unhandable / не игнорируемый сигнал или исключение.

Эти do_exit() сама функция выполняет много задач. После того, как это завершило свое выполнение, выделенные средства программы высвобождены ядром и возвращены к системе для дальнейшего использования.

Источник

0
ответ дан 14 May 2015 в 13:56

Другие вопросы по тегам:

Похожие вопросы: