我正在尝试使用带有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
任何人都知道这个问题吗?
答案 0 :(得分:6)
一点点谷歌搜索产生了一些结果。当您在调试器中运行时,看起来F12是由操作系统保留。 Here is a good thread关于这个问题。 MSFT在this connect article中提供了解决方法。它的要点是当调试器处于活动状态时,操作系统通过在当前正在执行的代码行输入调试器来响应F12。
如果您不在调试器中,那么这可能是堆栈损坏问题。你的代码片段看起来很简单,但我不太清楚GL是否知道你是否缺少必要的电话或违反其他程序规则。
答案 1 :(得分:0)
只是为了添加D.Shawley所写的内容:F12键非常方便,一旦你了解它。
值得强调的是,F12键仅在连接调试器时才有效,并且当没有调试器时此键正常工作。尽管如此,当有人需要调试时,避免将F12快捷方式映射到应用程序中有用的任何内容会更安全。
答案 2 :(得分:0)
在C中的visual studio中编程时,我得到了同样的错误信息,与F12键完全无关。对于在C中通过Google发现这篇文章的其他人来说 - 我的错误是由我的代码中的悬空指针引起的。
检查所有“免费”语句,并确保没有任何指针指向您要释放的内存。