Поскольку все ответы охватывают большинство аспектов вашего вопроса относительно современных ОС, но исторически есть один вопрос, о котором стоит упомянуть, если вы когда-либо программировали в мире DOS. Программы Terminant и Stay Resident (TSR) обычно возвращают управление системе, но находятся в памяти, которая может быть восстановлена программным / аппаратным прерыванием. Было нормально видеть такие сообщения, как «недостаточно памяти! Попробуйте выгрузить некоторые из ваших TSR» при работе с этими ОС.
Таким образом, технически программа завершается , но поскольку она все еще находится в памяти, любая утечка памяти не будет устранена, если вы не выгрузите программу.
Таким образом, вы можете рассматривать это как еще один случай, помимо того, что ОС не восстанавливают память либо потому, что она содержит ошибки, либо потому, что встроенная ОС предназначена для этого.
Помню еще один пример. Система управления информацией о клиентах (CICS), сервер транзакций, который работает в основном на мэйнфреймах IBM, является псевдоразговорным. При выполнении он обрабатывает данные, введенные пользователем, генерирует другой набор данных для пользователя, передает его в оконечный узел пользователя и завершает работу. При активации клавиши внимания он снова оживает, чтобы обработать другой набор данных. Из-за того, как она себя ведет, опять же технически, ОС не будет освобождать память от завершенных программ CICS, если вы не перезапустите сервер транзакций CICS.