我正在开发一个Windows应用程序,使用Windows XP机器进行开发。该应用程序在Windows XP上运行正常,没有任何内存泄漏。但是,在 Windows 7 Home Premium 计算机上运行会给我一个问题,但有时只会出现问题。
我正在开发一个使用OpenCV和OpenGL的Qt应用程序,经过一段时间从网络摄像头播放视频后,它只在W7中崩溃。错误如下:
Problem signature:
Problem Event Name: APPCRASH
Application Name: QtRIC.exe
Application Version: 0.0.0.0
Application Timestamp: 4e6ff3a5
Fault Module Name: MSVCR90.dll
Fault Module Version: 9.0.30729.4940
Fault Module Timestamp: 4ca2ef57
Exception Code: c0000005
Exception Offset: 00024651
OS Version: 6.1.7601.2.1.0.768.3
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
我已阅读other questions,表明问题出在Windows注册表中,但我不确定如何解决此问题。它只是在这个版本的Windows 7中崩溃(有时)。谢谢!
答案 0 :(得分:2)
c0000005
是访问冲突,00024651
是MSVCR90.dll中的偏移量。你得到一个偏移量,而不是一个绝对地址,因为你不知道并且不关心DLL在内存中的加载位置。 MSVCR90.dll的PDB将告诉您这是什么功能。
您可以在XP计算机上调试程序。检查它是否具有相同的DLL,以及它的加载位置。 (VS中的调试窗口)。然后添加偏移量(它是十六进制),并检查反汇编中的内存地址。假设加载了MSVCR90.dll的PDB,VS将告诉您该地址的功能。您可能需要向上滚动一点。