Здравствуйте, Vlad_SP, Вы писали:
V_S>Здравствуйте, Сыроежка,
V_S>Сравни:
V_S>V_S> String *newString = new String ("str");
V_S> delete newString;
V_S>
V_S>и
V_S>V_S> String *newString;
V_S> try
V_S> {
V_S> newString = new String( "str" );
V_S> }
V_S> catch ( ... )
V_S> {
V_S> delete newString;
V_S> }
V_S>
V_S>Ты действительно не видишь разницы в коде?
V_S>Разумеется, во втором варианте будет UB. Но это — твой вариант кода, а не тот код, о котором спрашивал TC; и давай не будем домысливать за топикстартера варианты (сферического) кода (в вакууме). ТС спросил о конкретном коде (и привел этот код), порождает ли он UB. Ответ — нет. Если ты считаешь иначе — попробуй в варианте ТС (до/на)писать код, порождающий UB — конечно же, без нечестных приемов вида String *newString = new String ("str");
V_S>newString = (String*)0x12345678;
V_S>delete newString;
Извините, но я не знаю, сколько раз таким, как вы, надо повторять, что рассматривался общий случай, что будет, если не выделится память, а затем будет вызван delete. Очевидно, что автор вопроса просто привел
произвольный код, чтобы было ясно, о чем идет речь.