Рассмотрим следующую программу:Когда объект на куче выходят из области видимости
int main() {
while(...) {
int* foobar = new int;
}
return 0;
}
Когда foobar
идут из сферы?
Я знаю, что при использовании new
атрибуты выделяются в куче, и их необходимо удалить вручную с помощью delete
, в приведенном выше коде, это вызывает утечку памяти. Однако, как насчет сферы?
Я думал, что это исчезнет из области действия, как только цикл while завершится, потому что у вас нет прямого доступа к нему больше. Например, вы не можете delete
после завершения цикла.
Это сложно, потому что 'foobar' это указатель, который правильно выходит за рамки и уничтожается (но объект, на который он указывает, не освобождается). «Int» является объектом в куче, не имеет области видимости, и поскольку у вас нет вызова «delete», он просочился. –