Исключения генерируются в try / catch в VS2008

#c #visual-studio-2008 #exception-handling

#c #visual-studio-2008 #исключение

Вопрос:

Я не смог найти поток с точно моей проблемой, поэтому, если кто-нибудь знает, была ли она решена, пожалуйста, перешлите ее мне 🙂

Я работаю над Visual C 2008, версия 9.0.21022.8 RTM. Я создаю некоторое тестирование, но VisualStudio всегда прерывается при этом исключении

 bool exceptionCaught = false;
try
{
  char* buff = NULL;
  buff[0] = 10;
}
catch (...)
{
  exceptionCaught = true;
}
  

Я снял все флажки в Debugging-> Exceptions, я перепробовал все опции в Tools-> Options dialog, в разделе Debugging.
Я использую обработку исключений /HEa (но в любом случае, / EHsc ничего не меняет)

Этот фрагмент кода отлично работает на другом компьютере, но даже при использовании его конфигурации мое поведение не меняется, оно все время ломается…

Есть ли что-то, чего мне не хватает? другой вариант / меню?

Комментарии:

1. Обработка исключений C не улавливает структурированные исключения (SEH) .

2. «Этот фрагмент кода отлично работает на другом компьютере»… но должно ли это? Этот код не очень хорош, и трудно сказать, что вы даже пытаетесь с ним сделать.

Ответ №1:

Запись через нулевой указатель является неопределенным поведением в C . Нет причин, по которым он должен генерировать исключение C . Вы не можете использовать модель исключений C для обработки прямой записи на недопустимые адреса.

Вероятно, это порождает некоторую форму ошибки операционной системы; это также можно назвать «исключением», но это не имеет ничего общего с исключениями C .