1

我在使用 MFC 的 Visual C++ 中使用大型解决方案。在更改之前一切都运行良好。当我刚刚修改了一个对话框并添加了一个新对话框时。程序在以下第一行开始引发异常:

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

在文件 RenderDevice.cpp 中。

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

谁能告诉我可能出了什么问题?

4

4 回答 4

1

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

于 2012-06-04T10:28:56.590 回答
0
  1. 尝试删除您的用户设置文件。
  2. 尝试调试并观察应用程序调用堆栈
于 2012-06-04T14:07:02.113 回答
0

我遇到了类似的问题,这是因为您没有释放 OpenGL 纹理、顶点数组对象、VBO、FBO 等可能分配的任何空间,至少在 OpenGL 的情况下。


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

于 2013-08-06T07:58:17.403 回答
0

GetLastError放在 wglDeleteContext 之后:

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

将调试器与

DWORD dwError = GetLastError();

您将获得 wglDeleteContext 失败的根本原因以及引发异常的原因。

于 2012-06-04T14:19:26.267 回答