У меня есть консольное приложение (написано с использованием MS VS2010 SP1).
Нет MFC, нет ATL, просто стандартная библиотека.
В отладочной сборке все работает ок.
Но в выпуске build есть нарушение прав доступа:
«Исключение первого шанса в 0x77b0206e в Mapp.exe: 0xC0000005: расположение чтения нарушения доступа 0x002cef58.»
Если я запускаю приложение из MS VS (даже в режиме выпуска), все работает нормально, и я не могу узнать, что происходит.
Я попытался использовать своевременную отладку, и я получил стек вызовов:
ntdll.dll!77b020cb()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
Mapp.exe!_unlock(int locknum=72090689) Line 375 C
04320069()
Это происходит, когда приложение закрывается и процесс уничтожения продолжается: есть одна строка, например, «delete ptr», которая вызывает исключение. Но я несколько раз проверял этот код и ничего не нашел. Я пытался использовать функции отладки CRT (диагностика утечек памяти, пользовательские перехватчики памяти и т. Д.), Но результатов не было.
Также я выясняю, что эта проблема решается при использовании отладочной версии CRT (используйте многопоточную отладку (/ MTd) в конфигурации релиза).
Еще одна вещь: когда я выполняю некоторые незначительные изменения в коде (например, пишу строку кода отладки), стек вызовов меняется, и каждый раз он совершенно другой. например:
ntdll.dll!77b0206e()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
Mapp.exe!_unlock_fhandle(int fh=72090689) Line 491 C
04320069()
и еще один
ntdll.dll!77b0206e()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!77b0201f()
kernel32.dll!768cf1cc()
Mapp.exe!free(void * pBlock=0x024950f0) Line 51 C
Mapp.exe!CGISMapLineShape::~CGISMapLineShape() Line 20 + 0x13 bytes C++
Mapp.exe!CGISMapPolygonShape::`scalar deleting destructor'() + 0x13 bytes C++
Mapp.exe!CGISMapMultyPolygonShape::~CGISMapMultyPolygonShape() Line 9 C++
Mapp.exe!CGISMapMultyPolygonShape::`scalar deleting destructor'() + 0xc bytes C++
Mapp.exe!CGISMapShapeCollection::Clear() Line 307 C++
Я понимаю, что в коде fpplication есть некоторые ошибки, но вопрос в том, могу ли я найти его
Вопрос