[C] erreur de segmentation
tophe03
Messages postés
327
Date d'inscription
Statut
Membre
Dernière intervention
-
tophe03 Messages postés 327 Date d'inscription Statut Membre Dernière intervention -
tophe03 Messages postés 327 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un programme qui se compile très bien.
Lorsque je l'exécute, le prog plante. Lorsque j'uitilise le debugger, au bout d'un certain temps d'eécution, j'ai un message du style "vilation d'accès (erreur de segmentation)...". Qu'est-ce qu cela signifie?
Merci
J'ai un programme qui se compile très bien.
Lorsque je l'exécute, le prog plante. Lorsque j'uitilise le debugger, au bout d'un certain temps d'eécution, j'ai un message du style "vilation d'accès (erreur de segmentation)...". Qu'est-ce qu cela signifie?
Merci
7 réponses
Celà signifie que tu accède à une zone mémoire non allouée (erreur typique en C quand on commence à manipuler des pointeurs ou des tableaux).
Exemple :
Solution :
Comment détecter une segmentation fault avec gcc+gdb :
Dans gdb :
A noter que pour windows dev cpp est basé sur gcc...
Bonne chance
Exemple :
#include <stdio.h> int main(){ int tab[5]; printf("%d\n",tab[69]); //seg fault car tab[69] est hors du tableau int *x; *x = 28; // seg fault, car *x est un entier non alloué return 0; }
Solution :
#include <stdio.h> #include <stdlib.h> int main(){ int tab[70]; printf("%d\n",tab[69]); int *x =(int*)malloc(sizeof(int)); *x = 28; return 0; }
Comment détecter une segmentation fault avec gcc+gdb :
gcc -g -W -Wall -o plop.exe plop.c gdb plop.exe
Dans gdb :
r bt
A noter que pour windows dev cpp est basé sur gcc...
Bonne chance
Je vois pas trop où j'aurais pu faire une erreur.
Voici une partie du code:
Pour ce qui est de la dérivation (IDM_DERIV), ça marche.
Pour la somme (IDM_SOMME), c'est là que j'ai l'erreur.
Si j'intercale des "SetWindowText(hEdit, buf);" dans IDM_SOMME, les polynomes p[0] et p[1] s'affichent correctement. C'est après que ça se gâte, au niveau de tampon[0]=add(p[0],p[1]).
Si tu vois qcc de louche...
Merci