На Learn C++, они написали это, чтобы освободить память:C++: Вопрос об освобождении памяти
int *pnValue = new int; // dynamically allocate an integer
*pnValue = 7; // assign 7 to this integer
delete pnValue;
pnValue = 0;
Мой вопрос: «Является ли последнее утверждение необходимо правильно освободить память, укомплектовать?»
Я думал, что указатель *pnValue
все еще находился в стеке, а new
не имеет никакого смысла для указателя. И если он находится в стеке, он будет очищен, когда приложение покинет область действия (где объявлен указатель), не так ли?
'pnValue' автоматически выделяется (в стеке), да. То, на что это указывает, - нет. Вы удаляете pnValue', чтобы удалить динамически выделенную память, на которую указывает, и указатель выходит из области действия позже. – GManNickG
@GMan: Спасибо! Я не был уверен в этом. Спасибо –