Re[9]: void () и new
От: Сыроежка  
Дата: 29.02.12 11:09
Оценка:
Здравствуйте, 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. Очевидно, что автор вопроса просто привел произвольный код, чтобы было ясно, о чем идет речь.
Меня можно встретить на www.cpp.forum24.ru
Re[10]: void () и new
От: Vlad_SP  
Дата: 29.02.12 11:45
Оценка:
Здравствуйте, Сыроежка,

к сожалению, без самого автора мы не сможем понять, что же он на самом деле имел в виду....
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.