erreur de segmentation en fonction de la manière de compiler
Bonjour,
Le programme suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| program test
character(80), pointer, dimension(:) :: x
allocate(x(100))
call subtest(x)
print*, x(1)
contains
subroutine subtest(X)
character(80), intent(out), dimension(:) :: X
X=""
X(1) = "bonjour"
end subroutine subtest
end program test |
compilé par:
Code:
f90 test.f90 -o test.bin
fonctionne (compilateur sunstudio version 12)
Par contre le même programme splité:
fichier main.f90:
Code:
1 2 3 4 5 6 7 8
| program test
character(80), pointer, dimension(:) :: x
allocate(x(100))
call subtest(x)
print*, x(1)
end program test |
fichier sub.f90:
Code:
1 2 3 4 5
| subroutine subtest(X)
character(80), intent(out), dimension(:) :: X
X=""
X(1) = "bonjour"
end subroutine subtest |
compilé par:
Code:
1 2
| f90 sub.f90 -c
f90 sub.o main.f90 -o main.bin |
plante avec une erreur de segmentation (le débogueur dit que le tableau n'est pas alloué).
Quelqu'un aurait une idée? :oops: