У меня есть настольная программа. Большинство операционных систем запускают программу в собственном адресном пространстве.
Когда программа завершается, я полагаю, что большинство операционных систем освобождают память, выделенную программой, и возвращают ее в стек памяти для повторного использования.
В чем я не уверен, так это в том случае, если в программе есть утечка памяти, будет ли «утечка» памяти также возвращена для повторного использования или она потеряна до перезагрузки машины?
Это продолжение вопроса, который я задавал ранее сегодня: Имеют ли место небольшие утечки памяти? , и в нескольких комментариях там упоминалось, что память программы освобождается по завершении программы. Если утечки освобождаются, когда программа завершена, то на меня определенно оказывается меньшее давление, чтобы строго избавить мою программу от мельчайших утечек.
В частности, я программист Windows, и мне нужно знать, что происходит (потеря памяти или освобождение памяти) для Windows 98, 2000, XP, Vista и 7. Но я также хотел бы услышать, что происходит на Mac и Unix машины.
Уточнение: я говорю о нерастущих утечках. Это утечки постоянного размера, которые случаются один раз при запуске программы.
Я понимаю, что утечки, которые постоянно растут в программе, являются серьезными и должны быть исправлены.
В любом случае вопрос не в том, нужно ли устранять утечки. Вопрос в том, вернут ли операционные системы утечку памяти после завершения программы.