Fortran Coder

关于access violation

查看数: 15871 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-2-27 23:42

正文摘要:

本帖最后由 andy8496 于 2020-2-27 23:44 编辑 调试一个程序,结果已经正确输出,但是在最后一步,弹出如图1所示提示,黑框没有任何内容。 这时候如果点继续,则出现图3所示窗口,确定后继续显示图1,除非点中断 ...

回复

jojo9 发表于 2021-9-14 16:28:00
还报了“其原因可能是堆被损坏,这说明 foamtogo.exe 中或它所加载的任何 DLL 中有 Bug。

原因也可能是用户在 foamtogo.exe 具有焦点时按下了 F12。”
jojo9 发表于 2021-9-14 16:26:24
我也碰到这奇怪的东西了,输出都是没问题。。编译也没报错
fcode 发表于 2020-3-1 09:02:20
这极可能是堆栈失衡了。
检查一下对程序的调用,特别是第三方函数库或混编的函数调用。
还有可能是主程序里有个数据结构(数组或结构体),传递给子程序的时候,子程序误以为大小比真实的大,所以操作(修改)了超过范围的该数据结构内容。

你说的“秋后算账”,这事还真的是有的。函数返回(包括主程序返回)的时候,会进行堆栈还原等操作。如果此时堆栈失衡,就会出问题。
比如程序准备返回主程序之外(运行时库)的返回点,但是这个返回点原来是存储在堆栈里的,失衡以后被破坏,导致返回失败。(比如要返回 0x00000000就会失败)
andy8496 发表于 2020-2-28 17:24:05
necrohan 发表于 2020-2-28 16:37
一步步跟进去也没啥问题?那怎么出的错误

对,结果也跟预期一样,用的VS+IVF,能打开的检查项也都打开了
一直到end program的位置停下来出错了
necrohan 发表于 2020-2-28 16:37:50
一步步跟进去也没啥问题?那怎么出的错误

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-4 11:02

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表