Здравствуйте. :) Вот такой вопрос возник, почему вот этот после выполнения int *x = new int[2]; delete x; идентичен вот этому int *x = new int[2]; delete []x; Везде где читал, сказано что массив нужно удалять вторым способом.
Ответ
Если вы выделяли память при помощи new[], вы обязаны освободить её с помощью delete[]. Так гласит стандарт.
Освобождение такой памяти как-то по-другому (delete без [] или вообще free) является Undefined Behaviour. Если в программе есть Undefined Behaviour, она имеет право вести себя как угодно: может ничего плохого не делать, может вылететь в любой точке, отформатировать ваш винчестер или выбросить из окна вашего кота.
You have been warned.
Комментариев нет:
Отправить комментарий