Я думаю, мы все понимаем необходимость удаления при переназначении динамически выделенного указателя, чтобы предотвратить утечку памяти. Тем не менее, мне любопытно, в какой степени мандат C++ использует удаление? Например, возьмем следующую программуДолжен ли новый всегда следовать за удалением?
int main()
{
int* arr = new int[5];
return 0;
}
В то время как для всех намерений и целей, не происходит здесь никакой утечки (так как ваша программа заканчивается, и операционная система будет очистить всю память, как только он вернется), но стандарт все еще требует - - или рекомендовать - использование delete [] в этом случае? Если нет, есть ли другая причина, по которой вы бы удалили [] здесь?
Действительно, я имею в виду, что я часто набираю инструкции delete [] прямо перед возвращением, хотя я знал (на практическом уровне), что это не имеет никакого значения. И это не привычка, я тоже хочу остановиться - мне просто было интересно, в какой степени стандарт рекомендовал ее. – GRB