Здравствуйте, Яшин Евгений, Вы писали:
ЯЕ>Хорошо, т.е. вы хотите сказать, что вот в таком коде
ЯЕ>ЯЕ>class C
ЯЕ>{
ЯЕ> int v;
ЯЕ> ~C(){}
ЯЕ>};
ЯЕ>void f()
ЯЕ>{
ЯЕ> C* ptr = new C[100];
ЯЕ> delete[] (int*)ptr;
ЯЕ>}
ЯЕ>
ЯЕ>компилятор просто не сможет правильно вычислить адрес начала "сырой" выделеной памяти и, попросту говоря, всё хлопнеться?
VC7.1 — AV.
ЯЕ>А вы сможете подтвердить такое поведение пунктом стандарта?
Да хоть вот это:
5.3.5/3
...In the second alternative (delete array) if the dynamic type of the
object to be deleted differs from its static type, the behavior is undefined
Динамический тип операнда — C*, а статический — int* — имеем неопределенное поведение.
ЗЫ
Быть может будет интересно еще кое-что о
delete []Автор:
Дата: 30.11.05