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 :

problème pointeur comportement étrange


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 9
    Points
    9
    Par défaut problème pointeur comportement étrange
    Bonjour, je suis un peu perdu alors je viens chercher de l'aide ici,

    voila pour faire cour, je n'ai pas le même résultat pour ces deux codes ci, alors qu'il me semble qu'il sont identique(dans leur résultat final)

    premier code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unsigned char c=*lireChar(desc);
    print_bin(c,8);
    deuxième code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unsigned char* c=lireChar(desc);
    print_bin(*c,8);
    la fonction lireChar(int desc) renvoie un unsigned char* non NULL, dans notre cas précis il vaudra (int) c=3

    pour le premier code le résultat est bien 0000 0011

    pour le deuxième code j'obtiens 0000 0000

    pourtant il me semblais que pour les deux codes différents, le premier paramètre envoyé a ma fonction print_bin étais EXACTEMENT la même....

    En quoi sont-elles différents? que ce passe t-il pour le deuxieme code?

    a l’intérieur de ma fonction lireChar, le resultat est bon c'est au moment de l’insérer dans *c qu'il se modifie... Je pensais pourtant que le comportement poiteur adresse était le même que pour le code C, ors le C++ semble possédé des nuances... capricieuse. Qu'elle est le problème dans cette situation? Que se passe t-il?

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 921
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    Bonjour,

    Le premier est beaucoup moins prudent (peut provoquer des erreurs de segmentation) dans le cas où la fonctionne retourne NULL.
    Le second vous permet de vérifier ce cas.

    Je dirai que votre bogue est difficile à voir, sachant que l'on ne sait pas vers quoi pointer c. En réalité, il se pourrait que votre pointeur, pointe sur une variable locale qui n'existe plus. En réalité, lorsque votre code "marche", c'est surement par "chance". Il aurait très bien pu ne pas marcher.

  3. #3
    Membre confirmé Avatar de KsassPeuk
    Homme Profil pro
    Ingénieur Chercheur
    Inscrit en
    Juillet 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 138
    Points : 635
    Points
    635
    Par défaut
    Lu'!

    A mon avis, tu renvoies l'adresse d'une variable locale de ta fonction, donc c'est undefined behavior (même en C) donc ça peut marcher, ou planter, ou faire n'importe quoi.
    Mais sans la fonction en question, impossible de répondre.

  4. #4
    Membre chevronné
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    861
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 861
    Points : 2 203
    Points
    2 203
    Par défaut
    Pourquoi ne pas se contenter de renvoyer la valeur du char d'ailleurs ?

Discussions similaires

  1. Réponses: 21
    Dernier message: 06/08/2009, 10h31
  2. Formulaire au comportement étrange : problème de POST
    Par Chlipouni dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 12h36
  3. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 10h54
  4. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 15h17
  5. Réponses: 2
    Dernier message: 22/09/2003, 12h23

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