Fortran segmentation error in pointer array

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 
0
segmentation-fault fortran
source share
1 answer

You need to change the last line of the main program:

 call hoge(foox%x) 

to

 call hoge(foox) 

If you defined the hoge routine in the module and imported it, then the compiler will get an error of this type.

+7
source share

All Articles