欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MFC42D版本错误引起的访问冲突access violation

程序员文章站 2024-01-05 11:49:34
...

一个vc6的程序,移植到vs2005下,经过一番调试,Release 版可以运行了,Debug却总也出现: 冒出的对话框为:Windows 已在 Plan_D.exe 中触发一个断点。 其原因可能是堆被损坏,这也说明 Plan_D.exe 中或它所加载的任何 DLL 中有 bug。 输出窗口可能提供了更

一个vc6的程序,移植到vs2005下,经过一番调试,Release 版可以运行了,Debug却总也出现:
冒出的对话框为:Windows 已在 Plan_D.exe 中触发一个断点。
其原因可能是堆被损坏,这也说明 Plan_D.exe 中或它所加载的任何 DLL 中有 bug。
输出窗口可能提供了更多诊断信息
Plan_D.exe 中的 0x5f42d429 处最可能的异常: 0xC0000005: 读取位置 0x0000000c 时发生访问冲突
Plan_D.exe 中的 0x7d64a79e 处最可能的异常: 0xC0000005: Access violation
Plan_D.exe 中的 0x7d64a79e 处未处理的异常: 0xC0000005: Access violation
这样的错误,找了很久都不明白什么意思。
仔细看了一下调试窗口和输出窗口,发现0x5f42d429 对应的模块应该是MFC42D.dll。mfc42d.dll是MFCDLL共享库文件,用于支持调试版本的MFC程序。有可能是这个文件本身有问题,搜索发现,机器上有两个MFC42D.dll,我正在使用的是2004年的,1M多,另一个是98年的,900k的样子。想到我的工程是从VC6移植过来的,可能需要98年的那个。换了之后,OK!
MFC42D版本错误引起的访问冲突access violation