Программизм
Mar. 3rd, 2004 10:02 pmСегодня пронаблюдал любопытный глюк оптимизации.
Код, по смыслу эквивалентный
Object* Func(OtherObject* param) {
Obj2 * param1 = (Obj2*) param;
return param1->Pointer
}
при передаче туда NULL не выдал ошибку. А вернул какой-то ненулевой указатель.
Механизм более-менее понятен, но факт нетривиален...
Код, по смыслу эквивалентный
Object* Func(OtherObject* param) {
Obj2 * param1 = (Obj2*) param;
return param1->Pointer
}
при передаче туда NULL не выдал ошибку. А вернул какой-то ненулевой указатель.
Механизм более-менее понятен, но факт нетривиален...
no subject
Date: 2004-03-03 04:25 pm (UTC)за такое отрывать руки разработчикам компилятора.
no subject
Date: 2004-03-03 11:38 pm (UTC)Но результат неожиданный.
no subject
Date: 2004-03-04 12:20 am (UTC)Пользуйте виртуальные функции и будет вам щастье.
Сорри, проходил мимо и не смог удержаться.
no subject
Date: 2004-03-04 02:20 am (UTC)no subject
Date: 2004-03-04 03:31 am (UTC)no subject
Date: 2004-03-04 03:25 am (UTC)