Здравствуйте, Аноним, Вы писали:
А>А 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;
А>
Память освободится, однако вызовутся деструкторы ClassB.