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 :

*b = *a et pourtant, ils ne sont plus egaux


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 950
    Par défaut *b = *a et pourtant, ils ne sont plus egaux
    re-bonjours,

    je vient de passer toute mon apres midi sur un probleme :

    voici un pseudo code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    classe foo
    {
      int *bar();
      int *foobar;
    }
     
    int *foo::bar()
    {
       this->foobar = new(3);  
        return foobar
    }
     
     
    dans la fonction appelant cette classe :
    int *foobar2 = foo->bar();
    et, au bout d'un moment, lorsque je rentre de nouveau dans ma classe, a l'aide du debuggeur, je voit que mes deux pointeurs ne pointent plsu au meme endroit.

    le mieux, je pense, serait de faire tester ce bug, je fournit donc les sources, a compiler avec wx-devcpp

    si quelqu'un veut bien s'y coller, voici ce qu'il faut faire :

    ajouter un breakpoint aux lignes 46 et 116 de "mysocketserveur.cpp"
    ensuite, lancer le debug, cliquer sur le bouton "serveur", puis lancer une deuxieme instance et cliquer sur le bouton client. (dans cet ordre)

    les varialbes a surveiller sont :
    socket
    sock
    sockBaseImg

    elles devraient toujours etre identiques...
    peu apres la ligne 116 (apres un envoie de trame sur le reseau), l'adresse de sock change...


    voici les sources :

    http://membres.lycos.fr/zulG/prog/plizHelp.zip

    edit : arf, ca passe pas, je les envoie par mail, si une bonne ame se fait connaitre (par mp le mail, soyez pas fou!)

    ps : dsl d'etre balourd

  2. #2
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Ton code compile ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    classe foo
    {
      int *bar();
      int *foobar;
    };
     
    int *foo::bar()
    {
       this->foobar = new int(3);  
        return foobar;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int *foobar2 = foo->bar();
    Et la tu appelle directement une fonction de la classe sans avoir crée un objet.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Le mieux, ce serait d'élagguer le code pour ne laisser que la partie qui pose un problème. Ca permet de savoir ce qui cause le problème.
    C'est le cas typique où des tests unitaires préliminaires permettraient de vérifier qu'un code fait bien ce qu'on lui demande de faire. De plus, en testant fréquemment, on sait ce qu'on a changé lorsqu'un bug apparaît

    Tu n'appelerais pas 2 fois bar() par hasard ?

  4. #4
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    De plus il doit pas être facile d'appeler :
    foo::bar()
    en dehors de la classe, elle est déclarée private.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  5. #5
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 950
    Par défaut
    je voulaiut mettrer juste un exemple leger, mais c'est vrai qu'en le truffant de bug...

    je ne voualit pas reduire mon appli a un exemple mini, car, je pense que c'est wxWidget qui modifie ma var :

    son gestionnnaire d'event est dans un objet A, qui appele un objet B.

    suite a une refonte du code non finie, A et B possedent tous les deux un pointeur sur le meme objet.


    si quelqu'un veut essayer avec les sources :
    http://membres.lycos.fr/zulG/Prog.htm
    il suit le lien...

    sinon, je posterait un bout de code ce matin.

  6. #6
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 950
    Par défaut
    rah!!!!
    je devientdingue!!!!!!

    j'ai trouvé mon erreure :
    j'ecrivait dansd un string non initialisé :'(


    1 jours 1/2 la dessus , je deleste (et je deteste)


    dsl :'(

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pas de pb, ça arrive à tout le monde

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

Discussions similaires

  1. des recordsets qui ne sont plus acceptés
    Par boss_gama dans le forum ASP
    Réponses: 2
    Dernier message: 02/08/2006, 09h51
  2. Réponses: 6
    Dernier message: 26/06/2006, 15h52
  3. Réponses: 9
    Dernier message: 29/10/2005, 20h11
  4. dans quels cas les pointeur sont plus rapides ?
    Par 180degrés dans le forum C++
    Réponses: 12
    Dernier message: 20/08/2005, 23h12

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