Здравствуйте, Андрей Тарасевич, Вы писали:
АТ>Совсем не обязательно только в этом случае. Механизмы 'new/delete' и 'new[]/delete[]' могут быть принципиально различными. Смешивание этих способов выделения/освобождения памяти потенциально ведет к неопределенному поведению независимо от характеристик деструктров объектов.
А delete[] знает о типе объектов?
например такое нормально?
char* pc = new[16];
long* pl = reinterpret_cast< long* >( pc );
delete[] pl;
а такое?
ClassA* pA = new ClassA[16];
ClassB* pB = reinterpret_cast< ClassB* >( pA );
delete[] pB;
А если выделить массив char, потом сделать placement new и освобождать память как массив объектов?
Будут корректно вызваны деструкторы объектов в массиве?