Я создаю игровой движок (Visual C ++, OpenGL, …), и он прошел долгий путь. Я особенно работал над безопасностью памяти и управлением памятью.
Каждая часть движка была создана в отдельных проектах, чтобы они не влияли друг на друга, пока я не уверен, что они в порядке, и затем я интегрирую их в движок.
Недавно я создал звуковой движок с использованием OpenAL, и если этот проект закрывается, я слышу звук окон, который был сопоставлен с «критической остановкой». На экране не появляется никаких ошибок, и программа, кажется, завершается нормально.
Где / как я должен начать поиск, чтобы найти причину этого? Что может быть причиной этого?
Редактировать: я только что заметил, что во время отладки я получаю «return 0» в _tWinMain, журнал отладки показывает: «exited with code 3».
Мои умственные способности по отладке (и подобный опыт) говорят мне, что у вас был сбой утверждения (или другой механизм, который пытается вызвать диалоговое окно отладки CRT) во время выключения (например, в деструкторе статического объекта). Завершение работы прошло достаточно далеко, и диалог не мог быть создан. Этот звуковой сигнал должен был сопровождать диалог, и код выхода 3 является одним из значений, которые может вернуть ошибка подтверждения.
Если вы запустите в отладчике, я думаю, вы увидите ошибку подтверждения, которая была предназначена для диалога в окне вывода. Если нет, вам, возможно, придется настроить пункт назначения для сообщений отладки CRT, используя _CrtDebugReport.
Других решений пока нет …