wglDeleteContext访问冲突

时间:2012-06-04 10:25:29

标签: c++ mfc openglcontext

我使用的是使用MFC的Visual C ++中的大型解决方案。变化之前一切运作良好。当我刚刚修改了一个对话框并添加了一个新对话框。程序开始在第一行结束时提出异常:

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

在文件RenderDevice.cpp中。

我正在使用TortoiseSVN,因此我还原了所有更改并重新编译了解决方案中的项目。但问题仍然存在。

谁能告诉我什么可能出错?

4 个答案:

答案 0 :(得分:1)

如果我是你,我会从Microsoft安装Application Verifier并打开应用程序的堆/内存检测,然后在调试器中运行它。

答案 1 :(得分:0)

  1. 尝试删除您的用户设置文件。
  2. 尝试调试并监视应用程序调用堆栈

答案 2 :(得分:0)

在wglDeleteContext之后放置GetLastError

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

将调试器放在

DWORD dwError = GetLastError();

您将了解为什么wglDeleteContext失败以及它抛出异常的原因。

答案 3 :(得分:0)

我遇到了类似的问题,它正在发生,因为你不会释放任何可能由OpenGL纹理,顶点数组对象,VBO,FBO等分配的空间,至少在OpenGL的情况下。


如果您没有使用OpenGL,那么看看您是否正在释放您在程序中使用的对象。