I have a problem with segmentation in fortran. I allocate an array of pointers by calling a subroutine and passing that array to another subroutine.
I will compile this program using PGI fortran 9.0.2 on a Linux machine. Here is my test program. How to fix this problem?
Many thanks for your help.
module hogehoge implicit none type foo real, pointer :: x(:)=>null() end type foo contains subroutine hogehoge_func(foox) type(foo), intent(inout) :: foox integer i allocate(foox%x(2048)) do i = 1, 2048 foox%x(i)=i end do end subroutine hogehoge_func end module hogehoge !main program------------------------------------------ program test use hogehoge implicit none type(foo) :: foox call hogehoge_func(foox) print*, 'in main program' print*, foox%x(1:20) call hoge(foox%x) end program test subroutine hoge(foox) use hogehoge implicit none type(foo), intent(in) :: foox print*, 'in subroutine' print*, foox%x(1) end subroutine hoge
Here is the result.
in main program 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 10.00000 11.00000 12.00000 13.00000 14.00000 15.00000 16.00000 17.00000 18.00000 19.00000 20.00000 in subroutine Segmentation fault
segmentation-fault fortran
user1586385
source share