#cpp
Здравствуйте!
У меня возник простой вопрос чисто академического характера. Допустим, где-то в коде
происходит создание динамического массива:
int *pi = new int[3];
Каким из трех способов обнулять динамический массив наиболее корректно/наиболее некорректно?
delete pi;
delete [] pi;
delete [3] pi;
Ответы
Ответ 1
Первый удаляет указатель, а не массив. Второй удаляет массив. Ну а по поводу третьего, в С++ вроде не нужно указывать размер массива. Так что правильно удалить ваш динамический массив можно вторым способом. А лучше найди доку по этому вопросу там будет всё подробно расписано. Там вроде как если удаляешь со скобками то будут вызваны деструкторы если массив объектов.Ответ 2
Про третий способ первый раз слышу. Первые два для встроенных типов одинаковы. Точнее, стандартом это тоже не определено, но здравый смысл подсказывает, что по-другому быть и не может. Для классов, естественно UB. Кстати, Боресков в своей книге "Расширения OpenGL" удаляет массив char для хранения пикселей изображения через delete, а не через delete[].
Комментариев нет:
Отправить комментарий