Re[4]: new для выделения памяти под массив ( new char[ 10 ]
От: Anton V. Kolotaev  
Дата: 25.09.03 07:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.