Любопытное исключение в Visual C ++ 10 во время выполнения - PullRequest
2 голосов
/ 05 июня 2011

Сегодня я получил действительно странное исключение во время выполнения.Я попытался отладить шаг за шагом, но исключение происходит до того, как вызывается main().

Поэтому я удалил каждое включение и весь код (прокомментировал его) и добавил пустую функцию main().

И снова после компиляции это происходит.Может быть, ошибка конфигурации проекта?

Кстати: после исключения отладчик VC10 переходит на strlen.asm и сообщает пустой указатель.

Решение VS10 получило 2 проекта, второй работает очень хорошо, иПервый тоже сделал, но после того, как я скомпилировал второй проект, он перестал работать.

Проекты имеют одинаковый вывод двоичных файлов, но у них есть дополнительная выходная папка для файлов obj и т. д. для каждого проекта.

Итак, что там происходит?

Ответы [ 2 ]

5 голосов
/ 05 июня 2011

Проблема, скорее всего, является частью инициализации глобального или статического объекта, который затем вызывает strlen с нулевым указателем. Есть ли у вас глобальные переменные в любом .cpp? Или какая-нибудь статика в некоторых классах?

Обратите внимание, что даже если вы удалите все из main.cpp, другие файлы .cpp все равно будут скомпилированы и вызовут ошибку.

0 голосов
/ 05 июня 2011

Без каких-либо подробностей трудно сказать что-либо точное, поэтому я могу поделиться только советом, основываясь на двух похожих опытах, которые у меня были. Этого не было в Visual Studio, но у вас может возникнуть та же проблема.

  1. Вам может понадобиться динамически загружаемый компонент (dll, ocx и т. Д.), Который не находится в пути, из которого вы запускаете версию отладки.

  2. Возможно, вы неправильно выполняли глобальные инициализации

...