3

我正在尝试使用 GLUT 和 C++ 画一条线 - 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。这是一个关于这个主题的好帖子。此连接文章中的 MSFT 提供了一种解决方法。它的要点是,当调试器处于活动状态时,操作系统会通过在当前正在执行的代码行处输入调试器来响应 F12。

如果您不在调试器中,那么这可能是堆栈损坏问题。您的代码片段看起来很简单,但我不太了解 GL,无法知道您是否错过了必需的调用或违反了其他一些程序规则。

于 2010-02-27T17:16:50.650 回答
0

只是补充一下 D.Shawley 所写的内容: F12 键非常方便,一旦您知道它。

值得强调的是,F12 键仅在连接了调试器时才有效,并且在没有调试器时此键正常工作。尽管如此,当有人需要调试时,避免将 F12 快捷方式映射到应用程序中任何有用的东西会更安全。

于 2010-02-27T17:21:33.830 回答
0

在 C 语言的 Visual Studio 中编程时,我收到了同样的错误消息,与 F12 键完全无关。对于通过谷歌发现这篇文章的其他 C 语言编程的人 - 我的错误是由我的代码中的一个悬空指针引起的。

检查所有“空闲”语句,确保没有任何指针指向要释放的内存。

于 2012-10-19T03:32:10.520 回答