Bonsoir,
J'ai une erreur "segmentation fault" à cause d'une allocation dynamique sur un tableau. Voici mon code :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
FUNCTION tabspot (OFFSHORE, hauteurhoulemin, hauteurhoulemax, listespot)
    IMPLICIT NONE
 
 
    !---------------------------------------
    !   Déclaration des arguments
    !---------------------------------------
    CHARACTER(LEN=5), INTENT(OUT) :: OFFSHORE
    INTEGER, INTENT(OUT):: hauteurhoulemin
    INTEGER, INTENT(OUT):: hauteurhoulemax
    CHARACTER(LEN=20), DIMENSION(4) :: listespot
 
 
 
    !---------------------------------------
    !   Déclaration du type de la fonction
    !---------------------------------------
    CHARACTER(LEN=20), DIMENSION(:), ALLOCATABLE :: tabspot
 
    !---------------------------------------
    !   Déclaration des variables locales
    !---------------------------------------
        INTEGER :: i,j
        listespot(1) = 'Cotedesbasques'
        listespot(2) = 'Mundaka'
        listespot(3) = 'Parlementia'
        listespot(4) = 'Hendaye'
j=0
DO i=1,4
    SELECT CASE (i)
        CASE(1)
            OFFSHORE = 'EST'
            hauteurhoulemin = 30
            hauteurhoulemax = 150
        CASE(2)
            OFFSHORE = 'SUD'
            hauteurhoulemin = 90
            hauteurhoulemax = 400
        CASE(3)
            OFFSHORE = 'EST'
            hauteurhoulemin = 120
            hauteurhoulemax = 500
        CASE(4)
            OFFSHORE = 'SUD'
            hauteurhoulemin = 60
            hauteurhoulemax = 200
    END SELECT
 
    IF (((vent1%direction==OFFSHORE).OR.(vent1%force<=2)).AND.(hauteurhoule>hauteurhoulemin).AND.(hauteurhoule<hauteurhoulemax)&
&  .AND.(vent1%force<=7))THEN
            tabspot(j)= listespot(i)
            j=j+1
            ALLOCATE (tabspot(j))
        END IF
END DO
 
END FUNCTION
Au début je n'avais pas fait d'allocation dynamique, tabspot avait toujours 4 colonnes: si un des tests était négatif ça me donnait une case vide. J'ai donc décidé de faire une allocation dynamique pour réduire la taille du tableau tabspot au nombre exact de tests positifs.
Le code compile mais à la fin de l'execution k'ai une erreur segmentation fault.

Comment puis faire pour résoudre ce problème ?

Merci d'avance pour vos réponses. =)