forrtl:严重(157):程序异常 - 访问冲突
Posted
技术标签:
【中文标题】forrtl:严重(157):程序异常 - 访问冲突【英文标题】:forrtl: severe (157): Program Exception - access violation 【发布时间】:2012-11-15 03:46:16 【问题描述】:我正在使用 BLUPF90 系列程序之一的“thrgibbs1f90b”,它基于“fortran”并用于 gibbs 采样以估计二进制数据的方差分量。每次我尝试运行 thrgibbs1f90b 时,都会收到以下错误消息:
forrtl: 严重 (157): 程序异常 - 访问冲突
Image PC Routine Line Source
thrgibbs1f90b.exe 0000000140021961 Unknown Unknown Unknown
thrgibbs1f90b.exe 000000014000BB5B Unknown Unknown Unknown
thrgibbs1f90b.exe 000000014026B41C Unknown Unknown Unknown
thrgibbs1f90b.exe 000000014024F4E3 Unknown Unknown Unknown
kernel32.dll 0000000076E2652D Unknown Unknown Unknown
ntdll.dll 0000000076F5C521 Unknown Unknown Unknown
知道为什么我会收到此消息吗?
谢谢!
【问题讨论】:
【参考方案1】:两个有根据的猜测
-
程序试图读取或写入不存在的数组元素,例如 25 元素数组的第 26 个元素。
为过程指定的虚拟参数与调用过程中的实际参数不匹配;例如,当需要一个 8 字节的值时传递一个 4 字节的实际值(或 反之亦然)
其中任何一个都可能导致尝试访问程序的进程无权访问的内存位置。还有许多其他可能的原因,但根据我的经验,这些是导致此类错误消息的 Fortran 程序中最常见的错误。
这两种情况都很容易发现,您需要(重新)编译您的程序并设置编译器选项以检查这些条件
【讨论】:
以上是关于forrtl:严重(157):程序异常 - 访问冲突的主要内容,如果未能解决你的问题,请参考以下文章
forrtl:严重(179):无法分配数组 - 数组大小计算溢出
编写高质量代码改善C#程序的157个建议——建议67:慎用自定义异常
编写高质量代码改善C#程序的157个建议——建议65:总是处理未捕获的异常
编写高质量代码改善C#程序的157个建议——建议68:从System.Exception或其他常见的基本异常中派生异常