IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Erreur de Segmentation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut Erreur de Segmentation
    Bonjour à tous,

    j'utilise des liste chainées pour faire un automate, et je reçois une erreur de segmentation je ne comprends pas du tout pourquoi! Je vous montre ma structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct assoc{
    	char lettre;
    	int state;
    	struct assoc* suiv;
    };
    typedef struct assoc* association;
    Donc voilà c'est juste une structure composé d'un entier, d'un char et d'un pointeur sur le prochain élément, rien de bien méchant. ET lors de cette fonction je reçois une erreur de segmentation (les printf sont juste pour expliquer mon problème) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int est_avant(char c, association a) {
    	printf("NULL ? %d\n",(a==NULL));
    	printf("CARAC : %d\n",a->lettre);
    	return (c < a->lettre);
    }
    le premier printf me renvoi 0, ce qui veut dire que a n'est pas NULL, et lorsque je veux accéder à a->lettre je reçois aussitôt une erreur de segmentation, je ne comprend pas pourquoi puisque a n'est pas NULL, et que a->lettre ne peut pas être NULL puisque c'est un char.

    Si quelqu'un a une idée de pourquoi je suis preneur !
    merci d'avance !
    cordialement

  2. #2
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    La variable a n'est pas nulle mais peut pointer vers une zone mémoire invalide.
    Tu arriveras à cibler ton problème en utilisant un debugger

  3. #3
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    merci pour cette réponse, mais qu'est ce qui est bien comme débeugueur ??
    j'ai utilisé valgrind la dernière fois ça ne m'avait as du tout aidé, je vais essayé quand même sur ce programme !!

  4. #4
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    Regarde ce sujet

  5. #5
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    qu'affectes-tu à a avant d'appeler est_avant ?

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    rebonjour,
    tout d'abord merci pour vos réponses, il s'agissait bien d'un pointeur non initialisé à NULL.
    j'ai déboguer avec valgrind et c'est vraiment pas mal je trouve !!! ça trouve bien les erreurs!

    une dernière question, je me suis rendu compte que, avec la fonction memset, on ne pouvait pas initialiser à la valeur NULL. existe t(il une autre fonction pour initialiser un char** (tableau de chaine de caractère), en lui disant de mettre à NULL ses 10 premiers éléments ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo