Qu'est ce qu' un segmentation faults
Résolu
sofi
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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??
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
Bonjour,
https://fr.wikipedia.org/wiki/Erreur_de_segmentation
travail en dehors de la zone mémoire allouée, mauvais adressage, débordement en écriture, tableau mal indexé ou autres, c'est pas les possibilités qui manquent.
https://fr.wikipedia.org/wiki/Erreur_de_segmentation
travail en dehors de la zone mémoire allouée, mauvais adressage, débordement en écriture, tableau mal indexé ou autres, c'est pas les possibilités qui manquent.
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
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
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?!!
est ce que je peux acceder à chaque caractére de ce tableau :
tableau [i] [j]
cette écriture est elle vraie?!!
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.
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];