NightmareZ
> Ну, а malloc может не выделить память. Какая разница?
Он исключение не кинет. Вернёт 0 и всё.
X512
> Он исключение не кинет. Вернёт 0 и всё.
Сути дела это не меняет. Абсолютно. И не пиши в моих темах.
NightmareZ
> Сути дела это не меняет. Абсолютно.
ещё как меняет...
jaxon
> ещё как меняет...
Как?
NightmareZ
Вот так меняет:
class Exception { public: Exception(const char *text) { int len = strlen( text); what = ( char*)malloc( len+1); if ( what) { strcpy( what, text); need_free = true; } else { what = "AHTUNG!!!111 Воруй, Убивай, Дели на ноль!"; need_free = false; } } ~Exception( void) { if ( need_free) { free( what); } } protected: char *what; bool need_free; }
А можно тупо выкинуть Fatal Error и затерминейтить процесс
Demiurg-HG
class Exception { public: Exception(const char *text) { int len = strlen( text); what = ( char*)malloc( len+1); if ( what) { strcpy( what, text); need_free = true; } else { what = 0; } char const * What( void) const { return what ? what : "AHTUNG!!!111 Воруй, Убивай, Дели на ноль!"; } } ~Exception( void) { free( what); } protected: char const *what; }
Ну есть же char[ConstSize], зачем вам malloc.
Вы ещё VirtualAlloc позовите и туда сообщение об ошибке сохраняйте.
Сорри за оффтоп, в си разибраюсь как свинья в апельсинах, НочнойКошмар, что подвигнуло тебя на С++? Навродь в шарпе денег быстрее можно заработать, сам же говорил.
Эксепшены не нужны...
Вот поэтому я на шарпе и пишу, чтобы с исключениями не изобретать велосипеды.
Executor
> Эксепшены не нужны...
+1
Нормальные бородатые программисты просто пишут одну функцию Error(const char *format, ...)
{
/* вывести сообщение */
exit(1);
}
А там где ошибки быть не должно пишут assertЫ()
И не изобретают ерунду. В конечном продукте все равно не должно быть ошибок.
правка: и еще в своем аллокаторе в дебаге сигнатуры повставлять.
Pokimon
> /* вывести сообщение */
> exit(1);
Чтоб студия так у тебя работала. Не могу открыть файл - exit.
Pokimon
> В конечном продукте все равно не должно быть ошибок.
Если бы.
Тема в архиве.