Николай Веселуха
Высший разум
(382125)
4 года назад
Завершение родительского процесса не гарантирует завершение дочерних процессов. В этом случае, если дочерние процессы лишены возможности принудительного завершения, они будут висеть в памяти и занимать системные ресурсы до выполнения перезагрузки либо вам их придётся убивать вручную из диспетчера задач (очень плохая идея).
serd
Просветленный
(20240)
4 года назад
Выделением памяти для приложения занимается ОС.
Программа запрашивает динамич. память у ОС (которая кст может и не выделить)
ОС все подчистит после завершения программы.
Gesigesend gesets
Профи
(568)
4 года назад
если это приложение - то по определению приложения - да, ОС очистит.
если это системный драйвер, то на винде я такое пробовал с драйвером, который писал. перезапуск и переустановка драйвера не помогает. помогает только перезагрузка. драйвер не только своего процесса не имеет, но даже память ни к какому из системных процессов не приписана. и мне казалось, что утечки в моем драйвере просто нет)) я не замечал, что общий расход памяти сильно увеличивался. через несколько часов работы системы с этим драйвером свободного ОЗУ не было.
мораль: на Си лучше не писать, а на С++ писать без ручного выделения памяти.
Ярослав
Искусственный Интеллект
(107903)
4 года назад
Скорее нет:
• память выделенная процессу - освобождается автоматически мемори менеджером ОС
• память выделенная системным объектам созданным процессом - не освобождается, пока сами объекты не будут освобождены (объекты могут не освобождаться и после завершения порождающего процесса. Это зависит от многих факторов).
// Кстати, утечка хэндлов сама по себе намного хуже утечки памяти - поэтому, с объектами ОС надо работать очень внимательно, корректно освобождая ресурсы явным образом (когда компилятор/интерпретатор не делает это магически, оставляя на совести программиста).
Vvvvvv KkkkkkМастер (1076)
4 года назад
На сколько я знаю в ядре Linux перед завершением процесса все открытые дескрипторы закрываются.
Евгений Высочин
Просветленный
(38033)
4 года назад
Если приложение использовало в работе только свою кучу, то утечка исчезнет. Если прога юзала процессы и память других запущенных программ и там накосячила, то утечка останется до завершения тех приложений.