c ++, что если я не вызываю оператор «delete» после создания указателя на кучу? - PullRequest
0 голосов
/ 03 апреля 2020

Я новичок в C ++, и я только что узнал, что при создании new 'ed указателя на кучную память вы должны delete вручную, например:

int *a = new int;
...
delete a;

Но, что если я не delete это? Будет ли это все еще занимать место в куче навсегда (не буквально навсегда, но вы поняли). Я создал несколько проектов, в которых я просто тестировал и баловался с ним, а в некоторых случаях я не указывал delete указатель позже. Итак, он автоматически получает delete 'в Visual Studio (которую я использую)? Или уже слишком поздно, и я ничего не могу с этим поделать (каким-то образом освободить это пространство)? Кроме того, я должен волноваться (потому что я)?

1 Ответ

3 голосов
/ 03 апреля 2020

После завершения программы память освобождается операционной системой. Это 2020 год, поэтому в тех тестовых приложениях, которые у вас были, нет никакого вреда, поскольку все современные операционные системы справляются с этим.

При этом во время работы программы память оставалась распределенной. Это плохо, потому что вы больше не используете эту память, и это пустая трата ресурсов.

...