Здравствуйте, 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"