Ответ на вопрос в заголовке:
Да. И нет.
нет
№:
Если процесс создает объект с new
и завершает работу без вызова delete
для того же объекта, объект никогда не уничтожается. Любое действие, которое будет выполнено деструктором, просто не выполняется .
Это может быть действие, которое требуется для согласованности внешних данных. Как что-то толкать в базу данных. Или как сброс кеша на диск. То, что действие пропущено, полностью зависит от деструктора.
Да
Память, занятая процессом, не теряется системой. Ваш процесс запросил несколько фрагментов памяти у ядра системы, чтобы он мог создавать свои объекты в этой памяти. Ядро отслеживает, какие страницы памяти оно выделило тому или иному процессу, и его не волнует, что этот процесс делает с ним . Ядро полностью не знает, какие объекты были созданы в памяти.
Когда процесс завершается, ядро просто освобождает любую память, которая все еще выделена для процесса. Таким образом, вы не теряете навсегда память, забывая delete
объекты при завершении работы.
Однако это исправление влияет только на использование памяти. Содержимое любого кеша, который не был очищен, остается незаполненным. И внешние файлы, которые находились в несогласованном состоянии при завершении процесса, будут оставаться в этом несогласованном состоянии навсегда.
Итак, суть: память все равно будет восстановлена ядром. Но вообще не стоит забывать об очистке. Лучше не привыкать к лени, потому что эта привычка сильно укусит тебя в будущем.