3

C ++でGLUTを使用して線を引こうとしています-IDEはVS 2008ですが、エラーメッセージが発生しました:

Windows は、Graphics.exe でブレークポイントをトリガーしました。

これは、ヒープの破損が原因である可能性があります。これは、Graphics.exe または読み込まれた DLL のバグを示しています。

これは、Graphics.exe にフォーカスがあるときにユーザーが F12 キーを押したことが原因である可能性もあります。

出力ウィンドウには、より多くの診断情報が表示される場合があります

もちろん、コードにブレークポイントはありません。これは私のコードです:

#include <glut.h>


void init (void)
{
 glClearColor(1.0,1.0,1.0,0.0);
 glMatrixMode(GL_PROJECTION);
 gluOrtho2D(0.0,200.0,0.0,15.0);
}//end of the function init

void lineSegment(void)
{
 glClear(GL_COLOR_BUFFER_BIT);

 glColor3f(1.0,0.0,0.0);
 // D R A W  A     L I N E 
 glBegin(GL_LINES);

  glVertex2i(180,15);
  glVertex2i(10,145);

 glEnd();

 glFlush();
}//end of the function "lineSegment"
void main(int argc, char** argv)
{
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 glutInitWindowPosition(50,100);
 glutInitWindowSize(400,300);
 glutCreateWindow("N.S"); 
 init();
 glutDisplayFunc(lineSegment);
 glutMainLoop();

}//end of the "Main" function

誰でも問題を知っていますか?

4

3 に答える 3

6

少しグーグルでいくつかの結果が得られました。デバッガーで実行しているとき 、 F12 はOS によって予約されているようです。これは、この件に関する良いスレッドです。この接続記事で、MSFT から入手できる回避策があります。この要点は、デバッガーがアクティブな場合、OS が F12 に応答して、現在実行中のコード行でデバッガーを開始することです。

デバッガーを使用していない場合、これはおそらくスタック破損の問題です。あなたのコード スニペットは非常に単純に見えますが、必要な呼び出しが欠落しているか、他の手続き規則に違反しているかを判断できるほど GL についてよく知りません。

于 2010-02-27T17:16:50.650 に答える
0

F12キーとはまったく関係のない、Cのビジュアルスタジオでプログラミングするときに、この同じエラーメッセージが表示されました。Google 経由でこの投稿を見つけた C でプログラミングしている他の人にとって、私のエラーはコード内にあったダングリング ポインターが原因でした。

すべての「空き」ステートメントを確認し、割り当てを解除するメモリを参照するポインタが残っていないことを確認してください。

于 2012-10-19T03:32:10.520 に答える
0

D.Shawley の記述に付け加えると、F12 キーは、一度知ってしまえば非常に便利です。

F12 キーは、デバッガーが接続されている場合にのみアクティブになり、デバッガーがない場合はこのキーが正常に機能することを強調する価値があります。それでも、誰かがデバッグする必要がある場合に備えて、F12 ショートカットをアプリで役立つものにマッピングすることは避けたほうが安全です。

于 2010-02-27T17:21:33.830 に答える