我在 Visual Studio Express 2010 下用 C++ 编写 OpenGL 程序时遇到了一个奇怪的问题。
我使用:Windows 7 64bit,OpenGl 4.x
我的伙伴使用:Windows XP 32bit,Visual Studio Express 2010,OpenGl 2.x
到目前为止,我们只是为我们的模型绘制了顶点,并且它在两个系统上都可以正常工作(我知道,我知道:已弃用,但我们仍然是初学者)。现在他包含了一个库来导入 3d 网格并制作动画。对他来说一切正常,但我明白了
Ant Simulation.exe 中 0x0055f838 处的第一次机会异常:0xC0000005:访问冲突读取位置 0x00bb0000。
Ant Simulation.exe 中 0x0055f838 处未处理的异常:0xC0000005:访问冲突读取位置 0x00bb0000。
使用调试器,我将问题追溯到该行
glDrawArrays(GL_QUADS,0,n_data);
我试图捕捉代码,但没有触发任何东西。很奇怪,昨天我可以用调试器在这条线上重复 2-3 次,直到它崩溃,今天它直接崩溃了。我昨天检查了n_data每次都是一样的。如果我在 Windows 中执行 *.exe,它会崩溃(下面的错误代码)。当我的伙伴向我发送他的 *.exe 时,它通常不起作用,但我可以启动它 1 次。我在其他窗口上重现了该错误。我们在 Linux 64bit 上试过,没有问题。我尝试在兼容模式下运行它,但问题仍然存在(仍然崩溃)。
不确定我是否理解正确。有一个我无法捕获但会杀死应用程序的异常 - 但为什么其他系统没有出现此异常的问题?
我试图按照链接中描述的方式解决它,但似乎在 VS Express 中我没有抛出第一次机会异常的菜单。我会尝试获得 VS 2012,但我还是想知道:这是一个完全 Windows 的东西,还是我的代码有问题导致崩溃(如链接中的评论之一所建议)?我也非常感谢解释实际发生的事情......
运行 *.exe 时出现的错误:
问题事件名称:APPCRASH
应用程序名称:Ant Simulation.exe
应用程序版本:0.0.0.0
应用程序时间戳:511d99a3
故障模块名称:StackHash_0a9e
故障模块版本:0.0.0.0
故障模块时间戳:00000000
异常代码:c0000005
异常偏移量:0037f278
操作系统版本: 6.1.7601.2.1.0.256.48
区域设置 ID:1031
附加信息 1:0a9e
附加信息 2:0a9e372d3b4ad19135b953a78882e789
附加信息 3:0a9e
附加信息 4:0a9e372d3b4ad19135b953a78882e789