Re[2]: delete и delete[ ]
От: Zigmar Израиль  
Дата: 30.01.07 09:43
Оценка: +1
Здравствуйте, Critical Error, Вы писали:
CE>При удалении массива объектов с помощью delete[] сначала запускается цикл, который тупо берет адрес массива, затем вызывает деструктор, прибавляет к адресу размер элемента и гоняет цикл пока не выйдет за границу массива.
Ты забыл добавить "В компиляторе A, версии B, с опциями C, на платформе D". Тогда только можно было бы говорить о верности такого предположения.

CE>Поэтому когда не уверен будет ли в точке удаления один объект или массив объектов, лучше применять delete[].

Т.е. ты предлагаешь вместо того, чтоб писать корректный код, полагаться на имлементацию UB в конкретном компиляторе. Отличное, решение, да.
Кстати, ситуации, когда "не уверен как выделялся объект" — не должно быть в принципе.


CE>Если там один элемент — ничего страшного, вызовется деструктор один раз, потеряешь только пару машинных тактов на обработку цикла.

Ничего страшно, ну разве что упадёт разок другой или диск отформатирует... UB и в Африке UB.

CE>Зато никакой неопределенности не будет.

См выше.

CE>Тем более, кто компилятор сам иногда оптимизирует код, превращая delete[] в delete когда надо.

Хмм... А можно источник?
"To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword."
-Seijuro Hiko, "Rurouni Kensin"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.