Fortran Coder

查看: 7820|回复: 2
打印 上一主题 下一主题

[文件读写] 文件读取程序,显示Segmentation fault invalid memory...

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
7 点
跳转到指定楼层
楼主
发表于 2018-11-14 18:20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
网上的一个Fortran程序,读取土壤数据,数据可下载(http://www.seevccc.rs/GMINER30/FERRUM30/),但是在程序运行的时候,显示如下错误


Program received signal SIGSEGV: Segmentation fault - invalid memory reference.


Backtrace for this error:
#0  ffffffff



我这里的系统是WIN10 64位,IDE是Code::Blocks 17.12,Fortran编译器是配套的GNU GCC Compiler,出问题的代码如下,核心的就是循环里面的open和read函数,那里有个注释说!!for pgf90,不知道是否意味着我的编译器等使用错误。
Fortran刚接手,基本不会,望指教,万分感谢!


[Fortran] 纯文本查看 复制代码
program ferrum30
implicit none

!====================================================================
! FERRUM30 is a global database of Ferrum fractions (%) in
! potentially erodible soils.
! The database is available for download: wwww.seevccc.rs/GMINER30

! Data are on 30-seconds gird (~ km) and are organized in 27 tiles
! with NXT x NYT points each.
! The Ferrum fractions are normalized to 100% with respect to clay
! and silt content of soil.
!
! This program is intended for reading Ferrum fractions (%)
! from the database.
!====================================================================

integer :: i, j, it, jj
real, parameter :: dlo=1./120.,dla=1./120.
integer, parameter :: nxt=40./dlo+1, nyt=50./dla+1
integer, parameter :: ntile=27
real, dimension (nxt,nyt) :: minf
character*7, dimension (ntile) :: ctile
data ctile /                                                       &
            'W180N90', 'W140N90', 'W100N90', 'W060N90', 'W020N90', &
            'E020N90', 'E060N90', 'E100N90', 'E140N90',            &
            'W180N40', 'W140N40', 'W100N40', 'W060N40', 'W020N40', &
            'E020N40', 'E060N40', 'E100N40', 'E140N40',            &
            'W180S10', 'W140S10', 'W100S10', 'W060S10', 'W020S10', &
            'E020S10', 'E060S10', 'E100S10', 'E140S10'/

print*, 'Dimensions of each tile:', nxt,'x', nyt

  do it=1,ntile
    minf=0
    open(31,file=ctile(it)//'.TFE', form='unformatted', &
            status='unknown', access='direct', recl=nxt*nyt*4) !! for pgf90
      read(31,rec=1) ((minf(i,j),i=1,nxt),j=1,nyt)
    close(31)
   enddo

endprogram ferrum30

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

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

沙发
发表于 2018-11-15 08:20:39 | 只看该作者
换一个 Code::Blocks 的版本或者 gfortran 的版本。这是 gfortran 的一个 Bug

2

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
7 点
板凳
 楼主| 发表于 2018-11-15 16:02:49 | 只看该作者
fcode 发表于 2018-11-15 08:20
换一个 Code::Blocks 的版本或者 gfortran 的版本。这是 gfortran 的一个 Bug

非常感谢,按照你的建议,我更换了Code::Blocks 16.01,运行之后确实没有出现帖子中的问题了。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-23 00:16

Powered by Tencent X3.4

© 2013-2024 Tencent

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