ФлеймФорумПрограммирование

C, строки. (2 стр)

Страницы: 1 2 3 Следующая »
#15
20:36, 16 янв 2010

NightmareZ
> Ну, а malloc может не выделить память. Какая разница?
Он исключение не кинет. Вернёт 0 и всё.

#16
20:41, 16 янв 2010

X512
> Он исключение не кинет. Вернёт 0 и всё.
Сути дела это не меняет. Абсолютно. И не пиши в моих темах.

#17
20:46, 16 янв 2010

NightmareZ
> Сути дела это не меняет. Абсолютно.
ещё как меняет...

#18
20:47, 16 янв 2010

jaxon
> ещё как меняет...
Как?

#19
21:24, 16 янв 2010

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 и затерминейтить процесс

#20
21:57, 16 янв 2010

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;
}
#21
21:59, 16 янв 2010

Ну есть же char[ConstSize], зачем вам malloc.

#22
22:00, 16 янв 2010

Вы ещё VirtualAlloc позовите и туда сообщение об ошибке сохраняйте.

#23
22:11, 16 янв 2010

Сорри за оффтоп, в си разибраюсь как свинья в апельсинах, НочнойКошмар, что подвигнуло тебя на С++? Навродь в шарпе денег быстрее можно заработать, сам же говорил.

#24
22:17, 16 янв 2010

Эксепшены не нужны...

#25
22:18, 16 янв 2010

Вот поэтому я на шарпе и пишу, чтобы с исключениями не изобретать велосипеды.

#26
22:41, 16 янв 2010

Executor
> Эксепшены не нужны...
+1

#27
23:12, 16 янв 2010

Нормальные бородатые программисты просто пишут одну функцию Error(const char *format, ...)
{
    /* вывести сообщение */
    exit(1);
}

А там где ошибки быть не должно пишут assertЫ()
И не изобретают ерунду. В конечном продукте все равно не должно быть ошибок.

правка: и еще в своем аллокаторе в дебаге сигнатуры повставлять.

#28
23:32, 16 янв 2010

Pokimon

> /* вывести сообщение */
> exit(1);

Чтоб студия так у тебя работала. Не могу открыть файл - exit.

#29
23:34, 16 янв 2010

Pokimon
> В конечном продукте все равно не должно быть ошибок.
Если бы.

Страницы: 1 2 3 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.