Подтвердить что ты не робот

Освобождает выделенную память, необходимую при выходе из программы на C

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

Я запускаюсь в среде Linux.

4b9b3361

Ответ 1

Любая современная операционная система очистит все после завершения процесса, но обычно это не очень хорошая практика, чтобы полагаться на это.

Это зависит от программы, которую вы пишете. Если это просто инструмент командной строки, который запускается и заканчивается быстро, вы можете не утруждать себя очисткой. Но имейте в виду, что именно это мышление вызывает утечки памяти в демонах и длительных программах.

Ответ 2

Это может быть хороший дизайн и очень эффективный, чтобы просто выйти и позволить операционной системе очистить все. Apple OS X теперь делает это по умолчанию: приложения убиваются без уведомления, если приложение не устанавливает флаг "не убивайте меня".

Часто освобождение каждого распределения памяти занимает значительное время. Возможно, некоторые страницы памяти были заменены, и их необходимо прочитать, чтобы они могли быть помечены как свободные. Распределитель памяти должен выполнять большую работу по обновлению данных отслеживания свободной памяти. Все эти усилия являются отходами, потому что программа выходит.

Но это должно быть сделано по дизайну, а не потому, что программист потерял информацию о выделенной памяти!

Ответ 3

В любом случае он будет освобожден операционной системой после завершения процесса. Так что вам это не нужно, но поскольку это хорошая практика, почему бы вам не сделать это в любом случае?:)

На самом деле со сложным кодом я бы не рискнул не выпускать что-то, что я не уверен на 100%, что будет бесполезно, потому что программа выйдет потом. Поэтому для любого минимального сомнения просто освободите его.

Ответ 4

Операционная система восстановит память, поэтому вам не нужно ее освобождать.

Большинство программ освобождают память, потому что, если вы не освобождаете какую-либо память, тогда у вас могут возникнуть проблемы, вызванные этими умышленными утечками.

Ответ 5

Да, вы можете предположить, что.

Хотя это хорошая практика для освобождения памяти сразу же после ее отсутствия, даже для программного обеспечения, которое выполняется в течение короткого времени.

Ответ 6

Linux освободит выделенную память и закроет дескрипторы файла при завершении процесса.

Ответ 7

Всегда освобождайте выделенную память, так как операционная система будет хранить меньше памяти без причины. Это очень заметно в небольших операционных системах, которые занимают небольшой объем памяти.

Ответ 8

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