Qu'est ce qu' un segmentation faults

Résolu
Bonjour,
j'ai une bug lors l'execution de mon programme <segmentation faults>
comment je peux enlever cette bug et qu'est ce que ce là veux dire??

3 réponses

  1. Bonjour,

    Une erreur de segmentation survient quand un programme essaie d'accéder à une adresse mémoire qui ne lui est pas allouée.

    Typiquement, dans ton programme, il y a de fortes chances qu'il y ait une erreur d'utilisation d'un pointeur...

    Xavier
    1. si j'ai par exemple char* tableau[5];
      est ce que je peux acceder à chaque caractére de ce tableau :
      tableau [i] [j]
      cette écriture est elle vraie?!!
      1. Modérateur
        À condition que i soit entre 0 et 4, et que tableau[i] ait été suffisamment alloué en mémoire (taille>=j)
      2. est ce que c'est obligatoire de faire un eallocation dans la mémoire d'un tableau de char* avec la fonction malloc ou bien c'est suffisant de déclarer de l'initialiser (c'est à dire que lorsque je l'initalise il est stoqué dans la mémoire)
      3. car dans mon code j'ai initialisé ma chaine et puis lorsque j'ai fais par exemple
        cahr* tableau[5];
        tableau[0]="Salut";
        streln(tableau[0]) il me donne pas la vraie réponse
      4. Modérateur
        Il te donne la bonne réponse car il est gentil (l'espace que tu utilises est bien celui de ton programme) mais en faisant comme ça tu peux également utiliser de l'espace qui n'appartient pas à ton programme, ce qui te donnera une segmentation fault !

        Donc oui, c'est obligatoire de faire de l'allocation mémoire, pour tous les pointeurs.

        Une manière simple de le faire est de borner la taille de tes char* en construisant un double tableau, l'allocation sera donc faite sans avoir à utiliser explicitement le malloc.

        char tableau[5][BUFSIZ];