Нарушение прав доступа wglDeleteContext

Я работаю с большим решением в Visual C++, в котором используется MFC. До изменений все работало хорошо. Когда я только что изменил диалог и добавил новый. Программа начала вызывать исключение при закрытии в первой строке:

    if (!wglDeleteContext(m_hRc))
    {
        throw;
    }
    m_hRc = NULL;
    return;

в файле RenderDevice.cpp.

Я использую TortoiseSVN, и поэтому я отменил все изменения и перекомпилировал проекты в решении. Но проблема осталась.

Кто-нибудь может сказать мне, что может быть не так?


person user1260953    schedule 04.06.2012    source источник


Ответы (4)


На вашем месте я бы установил Application Verifier от Microsoft. и включите обнаружение кучи/памяти для вашего приложения, а затем запустите его в отладчике.

person AndersK    schedule 04.06.2012

  1. Попробуйте удалить файл настроек пользователя.
  2. Попробуйте отладить и посмотреть стек вызовов приложений
person Tariq Mehmood    schedule 04.06.2012

Поместите GetLastError после wglDeleteContext:

if (!wglDeleteContext(m_hRc))
{
    DWORD dwError = GetLastError();
    throw;
}
m_hRc = NULL;
return;

Поместите отладчик в строку с

DWORD dwError = GetLastError();

Вы получите основную причину, почему wglDeleteContext не работает и почему он генерирует исключение.

person rkosegi    schedule 04.06.2012

У меня были похожие проблемы, это происходит потому, что вы не освобождаете пространство, которое могло быть выделено вашими текстурами OpenGL, объектом массива вершин, VBO, FBO и т. д., по крайней мере, в случае OpenGL.


если вы не используете OpenGL, посмотрите, освобождаете ли вы объекты, которые использовали в своей программе.

person 2am    schedule 06.08.2013