Да, в контексте вашей программы это утечка. Вы не отменили выделение Foo
.
Будет ли ваша ОС восстанавливать память процесса в любом случае? Может быть, может и нет. Конечно, Windows будет повторно использовать память.
Но если вам нужен универсальный гипер-практический ответ для вашей системы и вашей системы только тогда, да, вы можете уйти от этого.
Однако ни в коем случае косвенные ресурсы не будут освобождены магией от вашей ОС. . Деструктор Foo
может включать в себя более чем выделение памяти.
Если вы хотите C++ ответ, или тот, который имеет смысл в плане целостности кода, интеллектуальный дизайн (смеется) и откровенно просто хорошие привычки, нет. Когда кто-то задает твердые практические соображения, что должен найти причину, чтобы сделать delete
, это может быть трудно оправдать при принуждении предоставить такие примеры, как дескрипторы файлов, сетевые подключения и рабочие потоки. Но основной здравый смысл диктует, что все эти проблемы: автоматически позаботился о, , без необходимости указывать каждый отдельно, когда вы просто выполняете 5-секундное усилие, чтобы уничтожить свои объекты, когда закончите с ними.
Всего delete
it. У вас нет оправдания.
Да, это правильно для большинства ОС. – Duck
Что не так с 'Foo p;'. Затем объект автоматически уничтожается, когда вы покидаете область действия. – Brandin