Linux 환경에서 pgf90 fortran 컴파일러를 사용하여 동일한 서브 루틴을 두 번 호출 할 수 없습니다. 첫 번째 시간 동안 서브 루틴을 호출하는 것은 괜찮지 만 두 번째 시간 동안 호출하면 세그멘테이션 오류가 발생합니다. 어떤 사람이 내 코드에 어떤 문제가 있는지 제안 할 수 있습니까? 간단한 예제는 다음과 같습니다.리눅스에서 pgf90 컴파일러에서 두 번째 서브 루틴을 호출 할 때 세그먼트 화 오류가 발생했습니다.
P. 이 OK입니다 gfortran으로, 심지어는 인텔 비주얼 포트란에 그것을 시도하고 나는 그것이 당신이 전화를 처음 작동 놀라 울뿐입니다 솔직히
program main
use module_Append_1DI
implicit none
integer, allocatable:: Arr(:)
integer::Brr(2)
Brr=[3, 4]
call Append_1DI(Arr,Brr)
write(*,*)Arr
call Append_1DI(Arr,Brr)
write(*,*)Arr
end program main
module module_Append_1DI
contains
subroutine Append_1DI(A,B)
implicit none
!================================================
integer, allocatable, intent(inout)::A(:)
integer, intent(in)::B(:)
integer, allocatable::temp(:)
integer::sizeA,sizeB,sizeN
!================================================
sizeA=size(A); sizeB=size(B); sizeN=sizeA+sizeB
allocate(temp(sizeN)); temp(1:sizeA)=A
call move_alloc(from=temp,to=A)
A(sizeA+1:sizeN)=B
end subroutine Append_1DI
end module module_Append_1DI
는 상세 응답을, 대단히 이안 감사드립니다. 나는 나의 실수가 무엇인지 지금 이해할 수있다. –