Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/05/2006, à 00:00

keke

erreur de segmentation[résolu]

Lorsque je compile mon programme, tout se passe pour le mieux.Lorsque je l'execute,celui-ci me retourne l'erreur de segmentation.Le soucis est qu'a un moment, le meme programme compilé à fonctionner sans poser d'erreur.Est il possible que cela vienne du compilateur..Dans ce cas, comment le réinstaller?

Dernière modification par keke (Le 15/05/2006, à 23:46)


Tout ce qui paraît au-dessus de tes forces n'est pas forcément impossible ; mais tout ce qui est possible à l'homme ne peut être au-dessus de tes forces

Hors ligne

#2 Le 15/05/2006, à 09:19

viddak

Re : erreur de segmentation[résolu]

Salut!

Avant de réinstaller ton compilateur vérifie bien d'ou vient ce segmentation car il y a de grandes chances que ce soit ton programme qui soit mal ecrit plutot que ce soit le compilateur.

Si tu veux, poste le bout de programme qui fait planter l'appli et on t'aidera.


A+

Hors ligne

#3 Le 15/05/2006, à 09:27

Desintegr

Re : erreur de segmentation[résolu]

Ça peut dépendre du langage utilisé, de ton code source et du compilateur principalement.

La cause la plus probable : une erreur de programmation.
Si tu programmes en C ou C++, fais attention à tes pointeurs. C'est souvent la cause des erreurs de segmentation.


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#4 Le 15/05/2006, à 10:38

Enjoy Aspirin

Re : erreur de segmentation[résolu]

Moi qui débute en C, j'ai eut également des cas ou le programme était correctement compilé et construit mais provoquait une erreur de segmentation.

Exemples de problème que j'ai rencontré :

problème de pointeur :

int a;
scanf("%d",a);// a au lieu de &a

syntaxe tordue (si je me rappelle bien)

if (condition) switch (a) {
case 1: code;

case i: code;
} // il faudrait des accolades autour du bloc switch

#5 Le 15/05/2006, à 14:38

lost-in-the-shell

Re : erreur de segmentation[résolu]

Ca peut être du aussi à une tentative d'accès vers une variable qui n'appartient pas au programme ou à un fichier dont les droits ne correspondent pas à celui de l'éxecuteur. Si tu fais des fopen() , vérifie donc bien que les fichiers sont accessibles dans le mode que tu demandes.
Si tu penses que c'est un problème d'accès variable, vérifie toutes tes boucles for et while (généralement ça vient de là).
Une erreur fréquente :

int i, tableau[6] = {0}; /* Déclaration du tableau */
for(i = 0; i <= 6; i++)
{
printf("%d\n", tableau[i])
}

Dans ce bout de code, le for essaie d'accéder au 7eme élément (il ne faut pas oublier de compter le 0) du tableau, qui n'existe pas. Il y a deux moyens de corriger cette erreur :
* remplacer i <= 6 par i <= 5
* remplacer i <= 6 par i < 6

Vérifie aussi l'initialisation de tes pointeurs (écris int *point = NULL; au lieu de int *point; ).


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne

#6 Le 15/05/2006, à 21:15

gene69

Re : erreur de segmentation[résolu]

de toute façon un seg fault ya pas 36 possibilités
SOIT c'est un pointeur non initialisé (90%)
SOIT c'est un depassement de tableau (5 %)
SOIT c'est un pointeur qui pointe vers une zone mémoire qui a été libérée avec free() ou delete() (5%)


la premiere catégorie est énorme car il est tres facile d'écrire un bout de programme qui donne l'impression d'initialiser un pointeur et qui ne le fait pas. (passage des argument par copie, malloc() dans initialisation, ...)
Une autre erreur plus facile à detecter est la tentative de déréréférencer le pointeur NULL, celle là c'est du miel.

bon courage kéké wink


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#7 Le 15/05/2006, à 23:42

keke

Re : erreur de segmentation[résolu]

Merci pour tous ces conseils mais j'ai trouvé et sur ce coup là, je ne suis pas fier lol. Que s'est il passé ? Je genere un fichier texte de flottant où à la main j'ai effacé le terme END.J'ai développé mon bout de programme, ca marchait.Quand, j'ai regeneré un nouveau fichier, il m'a remis le END à la fin.Mon programme ne marchait plus.Les programmes que j'ai développé en cours ne marchait plus non plus d'ou mon idée que cela pouvait venir du compilateur.
BILAN: Faites confiance à la machine et pas à soi.....à méditer !!!Merci pour toutes ses réponses !!!!!!!!!!!!!

smile J'vous autorise à m'appeler "LeRigolo" smile

Dernière modification par keke (Le 15/05/2006, à 23:43)


Tout ce qui paraît au-dessus de tes forces n'est pas forcément impossible ; mais tout ce qui est possible à l'homme ne peut être au-dessus de tes forces

Hors ligne

#8 Le 16/05/2006, à 09:59

fabien

Re : erreur de segmentation[résolu]

PS : un programme qui compile n'est pas encore un programme qui fonctionne.

Hors ligne