Код исключения 0xc000001d: STATUS_ILLEGAL_INSTRUCTION . То есть код пытался выполнить инструкцию, которая не принадлежит набору команд процессора.
Это может быть по многим причинам:
- повреждение стека (из-за переполнения в массивах)
- поврежденный dll / бинарный
См. Код, который обрабатывает изменения состояния окна (минимизировать / развернуть / восстановить). Посмотрите, являются ли какие-либо вызовы таких функций, как memcpy
, strcpy
и т. Д. Несерьезными. Это небезопасные функции, для которых безопасные эквиваленты доступны с суффиксом _s
. Проверьте, записывает ли какая-либо необработанная манипуляция указателя / массива за ее пределы, чтобы вызвать повреждение стека . Также проверьте целостность dll, если вы уверены, что это из-за кода в dll.
Edit:
Если у вас есть источник DLL, создайте его с включенным генерацией файла карты (Linker Param: /MAPINFO:EXPORTS
). И когда выдается исключение, обычно вы получаете адрес внутри двоичного файла, где происходит сбой; это можно посмотреть в файле карты, чтобы узнать точную функцию, в которой происходит сбой (если это повреждение стека, точная функция только немного поможет, но даст окрестность повреждения). Подробнее см. в этой статье .