Bonjour,
Le programme suivant:
compilé par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
fonctionne (compilateur sunstudio version 12)
Code : Sélectionner tout - Visualiser dans une fenêtre à part f90 test.f90 -o test.bin
Par contre le même programme splité:
fichier main.f90:
fichier sub.f90:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
compilé par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 subroutine subtest(X) character(80), intent(out), dimension(:) :: X X="" X(1) = "bonjour" end subroutine subtestplante avec une erreur de segmentation (le débogueur dit que le tableau n'est pas alloué).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 f90 sub.f90 -c f90 sub.o main.f90 -o main.bin
Quelqu'un aurait une idée?![]()
Partager