Могу ли я использовать как л следующий код:Оператор удаления и литья
int main()
{
int* foo = new int;
double* bar = reinterpret_cast<double*>(foo);
delete bar;
}
ли это UB?
Я думаю, что нам нужно вызвать оператор delete только для указателей, возвращаемых оператором new, но как насчет литья в этом случае?
Я думаю, что это UB, так как reinterpret_cast не дает никаких гарантий относительно полученного указателя. Я прав?
Может ли кто-нибудь опубликовать правильную цитату из стандарта, пожалуйста?
Обратите внимание, что UB здесь находится в выражении удаления, а не в удалении оператора. – PlasmaHH
Хорошо, а как насчет UB здесь? Можете ли вы опубликовать цитату из стандарта, пожалуйста? – FrozenHeart