C/C++
Если приложение вызывает утечку памяти, то при завершение работы приложения динамическая память очиститься или нет?
Если приложение вызывает утечку памяти, то при завершение работы приложения динамическая память очиститься или нет, то есть так и будет занимать место в памяти до полного выключения машины
Завершение родительского процесса не гарантирует завершение дочерних процессов. В этом случае, если дочерние процессы лишены возможности принудительного завершения, они будут висеть в памяти и занимать системные ресурсы до выполнения перезагрузки либо вам их придётся убивать вручную из диспетчера задач (очень плохая идея).
Скорее нет:
• память выделенная процессу - освобождается автоматически мемори менеджером ОС
• память выделенная системным объектам созданным процессом - не освобождается, пока сами объекты не будут освобождены (объекты могут не освобождаться и после завершения порождающего процесса. Это зависит от многих факторов).
// Кстати, утечка хэндлов сама по себе намного хуже утечки памяти - поэтому, с объектами ОС надо работать очень внимательно, корректно освобождая ресурсы явным образом (когда компилятор/интерпретатор не делает это магически, оставляя на совести программиста).
• память выделенная процессу - освобождается автоматически мемори менеджером ОС
• память выделенная системным объектам созданным процессом - не освобождается, пока сами объекты не будут освобождены (объекты могут не освобождаться и после завершения порождающего процесса. Это зависит от многих факторов).
// Кстати, утечка хэндлов сама по себе намного хуже утечки памяти - поэтому, с объектами ОС надо работать очень внимательно, корректно освобождая ресурсы явным образом (когда компилятор/интерпретатор не делает это магически, оставляя на совести программиста).
Юрий Носов
На сколько я знаю в ядре Linux перед завершением процесса все открытые дескрипторы закрываются.
Если приложение использовало в работе только свою кучу, то утечка исчезнет. Если прога юзала процессы и память других запущенных программ и там накосячила, то утечка останется до завершения тех приложений.
Выделением памяти для приложения занимается ОС.
Программа запрашивает динамич. память у ОС (которая кст может и не выделить)
ОС все подчистит после завершения программы.
Программа запрашивает динамич. память у ОС (которая кст может и не выделить)
ОС все подчистит после завершения программы.
если исключение включает очистку памяти, то да, вычищает, иначе система потом все исправит, есть диспетчер памяти
если это приложение - то по определению приложения - да, ОС очистит.
если это системный драйвер, то на винде я такое пробовал с драйвером, который писал. перезапуск и переустановка драйвера не помогает. помогает только перезагрузка. драйвер не только своего процесса не имеет, но даже память ни к какому из системных процессов не приписана. и мне казалось, что утечки в моем драйвере просто нет)) я не замечал, что общий расход памяти сильно увеличивался. через несколько часов работы системы с этим драйвером свободного ОЗУ не было.
мораль: на Си лучше не писать, а на С++ писать без ручного выделения памяти.
если это системный драйвер, то на винде я такое пробовал с драйвером, который писал. перезапуск и переустановка драйвера не помогает. помогает только перезагрузка. драйвер не только своего процесса не имеет, но даже память ни к какому из системных процессов не приписана. и мне казалось, что утечки в моем драйвере просто нет)) я не замечал, что общий расход памяти сильно увеличивался. через несколько часов работы системы с этим драйвером свободного ОЗУ не было.
мораль: на Си лучше не писать, а на С++ писать без ручного выделения памяти.
очистится, после завершения приложения оно полностью убирается из оперативы
Похожие вопросы
- C++. Есть ли функция для завершения работы программы (аналог goto в самый конец программы)?
- C++ и динамическая память: это приемлемо?
- Устройство статических и динамических массивов в оперативной памяти (...)
- Программирование, динамическое выделение памяти в конструкторе класса
- Простой вопрос про динамическую память, new/delete, C++
- Задачи по динамической памяти. C++
- Помогите с динамической памятью C++
- Написать программу, которая по выбору пользователя меняет цвет консольного приложения C++
- Цветной фон и текст в консольном приложении
- Как компьютер определяет что в памяти записано знаковое или беззнаковое число?