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

Langage C++ Discussion :

Fonction et pointeur en paramètre provoquant une erreur de segmentation


Sujet :

Langage C++

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut Fonction et pointeur en paramètre provoquant une erreur de segmentation
    Hello,

    J'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void fonction(unsigned int* entier)
    {
         *entier = 5;
    }
     
    unsigned int* valeur = nullPtr;
    fonction(valeur);
    A l'exécution, j'ai une erreur de segmentation dans le corps de la fonction.

    J'ai vraiment tout perdu de ma connaissance des pointeurs ?...

  2. #2
    Membre actif Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Points : 281
    Points
    281
    Par défaut
    Ton bug est normal. Tu créé un pointeur (valeur) que tu initialise a 0. Ensuite tu déréférence 0 pour y affecter la valeur 5. A aucun moment tu n'alloues de la mémoire pour ton entier.

    Je pense que ce que tu voulais faire c'est quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void fonction(unsigned int* entier)
    {
         *entier = 5;
    }
     
    unsigned int valeur = 0;
    fonction(&valeur);
    La mémoire est alors alouée dans une variable globale. Si a variable est un pointeur, jamais de la mémoire n'est créée pour ton entier.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    En fait, je me suis déjà donné 2 claques.

    Et avais fait exactement ce que tu suggères.

    Merci.

  4. #4
    Membre actif Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Points : 281
    Points
    281
    Par défaut
    Toi tu as besoin de vacances

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/11/2011, 20h25
  2. Réponses: 2
    Dernier message: 17/09/2009, 14h50
  3. Réponses: 7
    Dernier message: 23/01/2008, 12h36
  4. Passer un pointeur en paramètre d'une fonction
    Par oranoutan dans le forum C
    Réponses: 18
    Dernier message: 11/09/2007, 21h48
  5. Réponses: 14
    Dernier message: 07/06/2007, 19h40

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