进入子程序时出现分段错误。在调试器中,我可以一直执行call RK_sub_step
到以下代码段中的第一个。一旦我进入子程序,它就会出现段错误。
module RK_mod
type(MyType), dimension(1:2) :: q0, q1, q2
contains
subroutine RK_sub_step(src, alpha, dest)
real(8), dimension(:) :: alpha
type(MyType), dimension(1:2,size(alpha)) :: src
type(MyType), dimension(1:2), intent(inout) :: dest
! compute dest from alpha and src
end subroutine
subroutine RK()
real(8) alpha(3)
call RK_sub_step((/q0/), (/alpha(1)/), q1) ! <- Segfault here
call RK_sub_step((/q0, q1/), alpha(2:3), q2)
end subroutine
end module
有什么想法我可能做错了吗?
编辑:
现在我设法通过创建可以调用的单独子例程来规避段错误
call RK_sub_step1(q0, alpha(1), q1)
call RK_sub_step2(q0, q1, alpha(2:3), q2)
call RK_sub_step4(q0, q1, q2, q3, alpha(4:8), q0)
但我仍然想知道,是否有可能只有一个像上面那样的子程序,或者为什么这不可能。