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

GetLastErrorをwglDeleteContextの後に配置します。

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

デバッガーを次の行に配置します

DWORD dwError = GetLastError();

wglDeleteContextが失敗する理由と、例外をスローする理由の根本原因を取得します。

于 2012-06-04T14:19:26.267 に答える
0

私は同様の問題を抱えていました.少なくともOpenGLの場合、OpenGLテクスチャ、頂点配列オブジェクト、VBO、FBOなどによって割り当てられた可能性のあるスペースを解放していないために発生しています.


OpenGL を使用していない場合は、プログラムで使用したオブジェクトを解放しているかどうかを確認してください。

于 2013-08-06T07:58:17.403 に答える