CE>При удалении массива объектов с помощью delete[] сначала запускается цикл, который тупо берет адрес массива, затем вызывает деструктор, прибавляет к адресу размер элемента и гоняет цикл пока не выйдет за границу массива.
CE>Так что создан массив с помощью new[] или просто malloc()-ом не важно. Поведение delete и delete[] довольно предсказуемо. Поэтому когда не уверен будет ли в точке удаления один объект или массив объектов, лучше применять delete[]. Если там один элемент — ничего страшного, вызовется деструктор один раз, потеряешь только пару машинных тактов на обработку цикла. Зато никакой неопределенности не будет. Тем более, кто компилятор сам иногда оптимизирует код, превращая delete[] в delete когда надо.
Категорически против того чтобы кто-либо следовал таким советам. Даже если это будет работать на каком-то конкретном компиляторе (не факт что это будет работать для следующей версии) ситуация с перекрытыми операторами new и new[] в каком-то конкретном классе или глобально вызовет, скорее всего, крах программы. Ну и действительно согласен с Zigmar — ситуация "не уверен как выделялся объект" — это уже само по себе признак программирования "на коленке".
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>