Страниц: [1]
  Печать  
Автор Тема: не могу отловить ошибку  (Прочитано 2714 раз)
athilson
Гость
« : Февраля 26, 2003, 02:33:00 pm »

Привет всем!

После выполнения следующего кода

int *p = NULL;
*p = 66;

происходит автоматический выход из программы без всякого на то оповещения...

если этот код заключить в try {} catch(...){} то результатов это не приносит.

Вопрос: как отловить такого рода ошибку?

Заранее благодарен,
athilson
Записан
vlad
Участник
*
Offline Offline

Сообщений: 0


Просмотр профиля
« Ответ #1 : Февраля 26, 2003, 02:42:00 pm »

Ну и вопросы!? :-

Чего же это Вы используете неициализированной указатель?! Естественно сработает защита памяти. Учебники по С читать надо!
Записан
athilson
Гость
« Ответ #2 : Февраля 26, 2003, 06:16:00 pm »


vlad пишет:
Ну и вопросы!? :-

Чего же это Вы используете неициализированной указатель?! Естественно сработает защита памяти. Учебники по С читать надо!



Учебник по С тут не при чем...
Вместо *p = NULL может быть все что угодно. например:

int *p = (int*)0x10;

Я имел ввиду, что в MS Win я получу что-то типа "p.exe has encountered a problem and needs to close.  We are sorry for the inconvenience. <B>Please tell Microsoft about this problem.</B>"

а в qnx (покрайне мере после компиляции как cc p.cpp) запуская такую программу я не получаю ничего (никакой мессаги). Как будто все нормально, а на самом деле... ничего хорошего.
Записан
Landy
Jr. Member
**
Offline Offline

Сообщений: 65


Просмотр профиля WWW
« Ответ #3 : Февраля 26, 2003, 06:24:00 pm »


а в qnx (покрайне мере после компиляции как cc p.cpp) запуская такую программу я не получаю ничего (никакой мессаги). Как будто все нормально, а на самом деле... ничего хорошего.

У тебя скорее всего в /var/dumps  будет файлик
prog_name.core

Делаешь например так

gdb ./prog_name /var/dumps/prog_name.core

Увидишь на каком месте вываливается и в какой библиотеке(динамической)
компилить с ключиком -g  желательно
Записан
Страниц: [1]
  Печать  
 
Перейти в: