Fortran Coder

查看: 22337|回复: 11
打印 上一主题 下一主题

[求助] 0xC0000005: 写入位置 0x0000000000180fe8 时发生访问冲突

[复制链接]

7

帖子

1

主题

0

精华

入门

F 币
98 元
贡献
49 点
跳转到指定楼层
楼主
发表于 2014-2-24 11:39:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
程序调试运行都没问题,就是运行到第13步时弹出这个错误提示,错误位置的子程序也没有看出问题,网上搜索的结果没有直接关于fortran的,都说是指针地址问题,但我在程序中没用指针。
求大神指点!
程序比较大,就先不放上来了。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

136

帖子

3

主题

0

精华

版主

F 币
1964 元
贡献
1677 点

帅哥勋章管理勋章爱心勋章新人勋章热心勋章元老勋章

沙发
发表于 2014-2-24 11:53:20 | 只看该作者
初步估计是数组越界

但是这个问题不好回答,没有代码,错误提示也不对,这个是汇编的错误代码,请给fortran的错误代码(dos-cmd,即黑框的对应错误提示),然后贴出对应的程序前后几行代码即可。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

板凳
发表于 2014-2-24 11:55:53 | 只看该作者
虽然你在源码级别上没用指针,但是指针实际是无处不在的。

给出你的代码,或者错误时候的截图是最好的了。(黑色console窗口的截图。)

7

帖子

1

主题

0

精华

入门

F 币
98 元
贡献
49 点
地板
 楼主| 发表于 2014-2-24 13:10:00 | 只看该作者
chuxf 发表于 2014-2-24 11:55
虽然你在源码级别上没用指针,但是指针实际是无处不在的。

给出你的代码,或者错误时候的截图是最好的了。 ...

整个程序太大了,我仔细查看了下计算中的参数值,发现问题是下面的一小段程序。L2在循环加1后结果还是0,而list2的数组界限不包括0,所以确实是数组问题。
运行窗口没有提示,错误窗口如图所示。

L2 = 0
DO N0=2,Nlev
        ddl0 = 1.5*dl0(N0)
        DO N1=1,Nsumbox(N0)
            I = I+1
            IF(Nlist2(I)>0)THEN
                DO I0=1,Nlist2(I)
                    L2 = L2+1
                    I1 = list2(L2)

bug.jpg (114.47 KB, 下载次数: 1048)

bug.jpg

bug2.jpg (393.24 KB, 下载次数: 1046)

bug2.jpg

7

帖子

1

主题

0

精华

入门

F 币
98 元
贡献
49 点
5#
 楼主| 发表于 2014-2-24 13:18:53 | 只看该作者
两位大神方便留下QQ号吗?我想方便的话,可以远程协助。

7

帖子

1

主题

0

精华

入门

F 币
98 元
贡献
49 点
6#
 楼主| 发表于 2014-2-24 13:21:26 | 只看该作者
刚有分析了一下,问题程序应该是如下循环部分。
Nlist2(I)在I=6时才开始大于0,而程序中断时I=5,所以后面必然连锁出错。这是什么原因造成的呢?明明前几步的大循环都没有出错啊。

    I = 1
    L2 = 0
    DO N0=2,Nlev
        ddl0 = 1.5*dl0(N0)
        DO N1=1,Nsumbox(N0)
            I = I+1
            IF(Nlist2(I)>0)THEN
                DO I0=1,Nlist2(I)
                    L2 = L2+1
                    I1 = list2(L2)
                    xx = boxCen(I1,1)-boxCen(I,1)
                    yy = boxCen(I1,2)-boxCen(I,2)
                    zz = boxCen(I1,3)-boxCen(I,3)
                    IF(ABS(zz)>ddl0)THEN
                        IF(zz>0.) THEN
                            NlistU(I) = NlistU(I)+1
                            listU(I,NlistU(I)) = I1
                        ELSE
                            NlistD(I) = NlistD(I)+1
                            listD(I,NlistD(I)) = I1
                        END IF
                    ELSE
                        IF(ABS(yy)>ddl0)THEN
                            IF(yy>0.) THEN
                                NlistN(I) = NlistN(I)+1
                                listN(I,NlistN(I)) = I1
                            ELSE
                                NlistS(I) = NlistS(I)+1
                                listS(I,NlistS(I)) = I1
                            END IF
                        ELSE IF(ABS(xx)>ddl0)THEN
                            IF(xx>0.)THEN
                                NlistE(I) = NlistE(I)+1
                                listE(I,NlistE(I)) = I1
                            ELSE
                                NlistW(I) = NlistW(I)+1
                                listW(I,NlistW(I)) = I1
                            END IF
                        END IF
                    END IF
                END DO   
            END IF
        END DO
    END DO

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

7#
发表于 2014-2-24 13:23:16 | 只看该作者
你给出的信息不成系统,不太好确定问题所在。

可能有用的信息:
1. L2不应该为0,你可以单步看看。
2. 可能产生了堆栈溢出。尝试加大堆栈。
3. 在你给出的截图中,794行的 TML2子程序内,ig 的值是多少?是模块中的常量吗?
4. 尝试把一些较大的固定大小局部变量数组,改为可分配数组。例如 listU , listD
5. 尝试出现错误时,点击中断按钮,查看错误发生的位置。
6. 尝试 Debug 单步

7

帖子

1

主题

0

精华

入门

F 币
98 元
贡献
49 点
8#
 楼主| 发表于 2014-2-24 14:03:53 | 只看该作者
fcode 发表于 2014-2-24 13:23
你给出的信息不成系统,不太好确定问题所在。

可能有用的信息:

确实是堆栈问题,没注意到有个提示stack overflow,调到最大可以运行了。多谢!
方便留下QQ吗?

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

9#
发表于 2014-2-24 14:17:28 | 只看该作者
teddy2003 发表于 2014-2-24 14:03
确实是堆栈问题,没注意到有个提示stack overflow,调到最大可以运行了。多谢!
方便留下QQ吗?
...

加入我们的QQ群,楼上这些人你都可以看到。

QQ群:2338021

如果代码较多,最好在论坛发帖。

136

帖子

3

主题

0

精华

版主

F 币
1964 元
贡献
1677 点

帅哥勋章管理勋章爱心勋章新人勋章热心勋章元老勋章

10#
发表于 2014-2-25 16:47:43 | 只看该作者
可以结题了~
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-3 17:12

Powered by Tencent X3.4

© 2013-2024 Tencent

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