腐败的堆和& F12问题

时间:2010-02-27 16:28:34

标签: c++ heap breakpoints glut

我正在尝试使用带有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

任何人都知道这个问题吗?

3 个答案:

答案 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发现这篇文章的其他人来说 - 我的错误是由我的代码中的悬空指针引起的。

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