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 habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Par défaut Erreur de segmentation
    Bonjour,

    Voici mon problème.
    J'ai défini une tortue comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct 
    	{
    		cairo_t *cr;
    		int angle;
    	}
    	tortue;
    Ensuite je veux initialiser l'angle dans mon main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tortue *statique;
    (*statique).angle=50;
    Mais au moment de lancer mon exécutable il me renvoie erreur de segmentation (je sais que la syntaxe est bonne car j'arrive à compiler).

    Qulqu'un pourrait-il m'éclairer? Merci beaucoup d'avance

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sylvanus35 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct 
    	{
    		cairo_t *cr;
    		int angle;
    	}
    	tortue;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tortue *statique;
    (*statique).angle=50;
    Mais au moment de lancer mon exécutable il me renvoie erreur de segmentation
    Bah, si tu définis un pointeur, il faut lui donner une valeur valide. Déréférencer un pointeur non initialisé invoque un comportement indéfini. C'est le B.A. BA du C...
    (je sais que la syntaxe est bonne car j'arrive à compiler).
    Un compilateur correctement configuré aurait probablement repéré le problème...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Par défaut
    Je ne comprend pas. Pourquoi ma valeur n'est-elle pas valide??(je débute en programmation

  4. #4
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Cela defini simplement un pointeur sur une structure "tortue" .. il faut donc que ta structure soit valide..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tortue statique;
    statique.angle=50;
    Cela fonctionnera mieux ... car tu créé directement un instance de ta structure dont tu modifie un paramètre.
    Tu peux très bien créer ensuite un pointeur sur cette structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    torture * p_statique = &statique;  // initialisé à l'adresse de ta structure .
    !!!!ATTENTION!!!! Il ne faut pas détruire ton instance "statique" .. et utiliser ton pointeur ensuite ...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Par défaut
    Ok. J'essaie comme ça. Merci

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    Par défaut
    Bon j'ai essyé mais pour être honête je ne suis pas sûr qu'il faut que je crée une structure tortue dans mon main.

    Dans mon sujet de TP il est demandé de programmer une fonction qui prend un argument un pointeur sur une tortue et un entier n et qui fait tourner la tortue de n degrés.

    Alors dans ma fonction main je suis obligé de définir un pointeur sur ma structure tortue et non pas une structure tortue. Non?

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sylvanus35 Voir le message
    Je ne comprend pas. Pourquoi ma valeur n'est-elle pas valide??
    Parce que que quand on définit une variable locale en C, celle-ci n'est pas initialisée. Sa valeur est donc indéterminée.
    (je débute en programmation)
    Et ce n'est pas une question de 'programmation', mais de 'codage' (ici, le langage C).

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