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 :

Comportement bizarre avec un pointeur


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 230
    Par défaut Comportement bizarre avec un pointeur
    Bonjour,

    je suis en train de développer une application avec GCC en C++ et je rencontre un problème qui m'étonne. J'ai eu beau débugger avec eclipse pour vérifier les emplacement mémoire de mes pointeurs et vérifier qu'il n'y a pas d'effet de bord et je ne constate rien d'anormal...
    Voici donc mon problème :
    Je récupère après appel d'une fonction d'une librairie tierce un "const unsigned char *" et je m'en sers à diverses reprises dans différentes fonctions. En premier lieu je stocke ce pointeur dans un attribut d'une instance (l'attribut étant lui aussi un pointeur), puis je passe mon instance dans une fonction, cette fonction prend l'instance et récupère le "const u_char *" et affiche son contenu grâce à une simple boucle printf.
    Lorsque j'affiche le contenu du "const u_char *" avant de le mettre dans l'instance il est correct, ensuite si j'affiche le contenu de ce même "const u_char *" dans ma dernière fonction, le contenu a changé (pas tout le temps).
    Pourtant il s'agit bien d'un const, et j'ai vérifié que les adresses soient bien identiques et elles semblent l'être.

    Avez-vous une explication quant au changement du contenu de mon "const u_char *" ? Je suis désemparé...

    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 494
    Par défaut
    Elle est const pour l'appelant, pas forcement pour la librairie.
    Avant de faire d'autres appels à des fonctions de la librairie, faite une copy de la string dans votre espace de travail.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 230
    Par défaut
    Pour faire une copie, j'utilise simplement memcpy ? strcpy ne fonctionne pas car elle ne prend pas les unsigned char...
    Par contre en utilisant memcpy, comment je peux savoir la taille des données à copier ?
    Merci encore.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    La premiere fonction qui te donne un const unsigned char * doit aussi te donner la taille des données qu'il y a derrière.

    Ou alors la taille des données est supposée connue (pointeur sur une structure par exemple).

    Il faut regarder dans la donc
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 230
    Par défaut
    Super merci pour vos réponses. J'ai réussi à stabiliser mon appli je crois en faisant une copie des données dans le setter de ma classe.

    Salutations

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Pourrais tu nous donner le code original et le code actuel, parce que, c'est plus fort que moi, mais dés que j'entends parler de setter, je me dis qu'il y a peut être autre problème à la base ... Surtout si j'ai déjà croisé des fonctions issues du C dans la discussion
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Code bizarre avec les pointeurs
    Par deubelte dans le forum C++
    Réponses: 4
    Dernier message: 04/07/2010, 19h08
  2. [XSL-FO] comportement bizarre avec tableau
    Par titouille dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 25/11/2009, 12h47
  3. [A-07] Comportement bizarre avec Jointure
    Par mayekeul dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 06/02/2009, 12h48
  4. Comportement bizarre avec le SQL a la carte
    Par fatatov dans le forum Deski
    Réponses: 2
    Dernier message: 11/07/2008, 16h47
  5. [TRANSAQ SQL] INSERT comportement bizarre avec les REAL
    Par argyronet dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/12/2005, 11h47

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