在下面的代码中,如果我使用 ifort 编译运行正常,但如果我使用 gfortran 运行它会出现错误:“程序收到信号 SIGSEGV:分段错误 - 内存引用无效。”
有人可以告诉我我做错了什么吗?或者也许是 gfortran 的问题。
PROGRAM testing
IMPLICIT NONE
REAL :: coordN(3,2),aux(2,2),vec(2)
INTEGER :: cara(3,2),c
!
coordN = 0.0; cara = 0; vec = 0.0
!
coordN(1,1)=-1.0; coordN(1,2) = -2.0
coordN(2,1)=-10.0; coordN(2,2) = -20.0
coordN(3,1)=-100.0; coordN(3,2) = -200.0
!
cara(1,1) = 1; cara(1,2) = 2
cara(2,1) = 1; cara(2,2) = 3
cara(3,1) = 3; cara(3,2) = 2
!
PRINT*,SIZE(coordN(cara(c,:),:),1),SIZE(coordN(cara(c,:),:),2)
aux = coordN(cara(c,:),:)
!
END program testing
注意
PRINT*,SIZE(coordN(cara(c,:),:),1),SIZE(coordN(cara(c,:),:),2)
说 coordN(cara(c,:),:) 实际上是一个 2x2 实矩阵。所以,我不明白为什么我做不到
aux = coordN(cara(c,:),:)