Ubuntu автоматически освобождает память, выделенную программой на C, когда программа завершается?
11
Я написал программу на C, содержащую код, распределяющий память, используя malloc()функцию. Если я не освобожу память с помощью этой free()функции, Ubuntu освободит ее автоматически?
Это не имеет ничего общего с Ubuntu, ответственность его ядра.
пользователь
@user: Определенная версия Ubuntu должна работать поверх одной из версий ядра Linux. Так что он как-то связан с Ubuntu, чтобы знать, освобождает ли ядро, на котором он работает, память автоматически или нет.
ashubuntu
Ответы:
16
Да.
Ядро высвободит все ресурсы, выделенные программой после ее завершения.
Это делается после того, как do_exit()функция, определенная в kernel/exit.c, завершила свое выполнение; само do_exit()выполнение функции может быть инициировано рядом событий, чаще всего явным exit()системным вызовом, вызываемым программой во время ее регулярного вычисления, или неявным exit()системным вызовом, вызываемым программой после ее завершения (поскольку компилятор C помещает exit()системный вызов после main()s возвращение). Другие причины включают в себя получение неприемлемого / не игнорируемого сигнала или исключения.
Сама do_exit()функция выполняет ряд задач. После того, как выполнение было прекращено, выделенные ресурсы программы высвобождаются ядром и возвращаются в систему для дальнейшего использования.
Ответы:
Да.
Ядро высвободит все ресурсы, выделенные программой после ее завершения.
Это делается после того, как
do_exit()
функция, определенная вkernel/exit.c
, завершила свое выполнение; самоdo_exit()
выполнение функции может быть инициировано рядом событий, чаще всего явнымexit()
системным вызовом, вызываемым программой во время ее регулярного вычисления, или неявнымexit()
системным вызовом, вызываемым программой после ее завершения (поскольку компилятор C помещаетexit()
системный вызов послеmain()
s возвращение). Другие причины включают в себя получение неприемлемого / не игнорируемого сигнала или исключения.Сама
do_exit()
функция выполняет ряд задач. После того, как выполнение было прекращено, выделенные ресурсы программы высвобождаются ядром и возвращаются в систему для дальнейшего использования.Источник
источник