Bonjour,

Le programme suivant:

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
compilé par:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
f90 test.f90 -o test.bin
fonctionne (compilateur sunstudio version 12)

Par contre le même programme splité:

fichier main.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
fichier sub.f90:
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 subtest
compilé par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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?