堆腐败和F12问题

N.S*_*N.S 3 c++ heap glut breakpoints

我正在尝试使用带有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
Run Code Online (Sandbox Code Playgroud)

有谁知道这个问题?

D.S*_*ley 6

一点点谷歌搜索产生了一些结果.当您在调试器中运行时,操作系统似乎保留了 F12 . 这是关于这个主题的好主题.在这篇连接文章中,MSFT提供了一种解决方法.它的要点是,当调试器处于活动状态时,操作系统通过在当前正在执行的代码行输入调试器来响应F12.

如果您不在调试器中,那么这可能是堆栈损坏问题.你的代码片段看起来很简单,但我不太清楚GL是否知道你是否缺少必要的电话或打破其他程序规则.