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 :

Arbres binaires, destructeurs récalcitrant, auto_ptr déroutant les constructeurs.


Sujet :

C++

Mode arborescent

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut Arbres binaires, destructeurs récalcitrant, auto_ptr déroutant les constructeurs.
    Bonjour,

    j'avais un problème de fuites de mémoire dans un programme de calcul symbolique qui représente les fonctions sous forme d'arbre binaire.

    Typiquement des que je mettais un destructeurs classique qui tue les fils, ça me donnait des segfaults de partout.

    Les segfaults se produisent lors de la destruction d'un nœud ayant des successeurs.

    J'ai donc décidé d'essayer de remplacer mes pointeurs par des auto_ptr, qui je crois sont censés aider dans la gestion des destructions des objets dynamiques.

    Et là étrange problème, mes constructeurs ne marchent plus,par exemple pour créer une fonction constante, j'ai la classe number, si dans un programme j'écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    number One=number(1);
    le compilateur me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    erreur, no matching function to call number:number(number).
    les candidats sont: 
    number.h(l56)         number:number(double)
    number.h(l41)         number:number(number&)
    Alors d'une part c'est étrange car je n'ai aucune idée de la manière dont mon code s'est mis à considérer les doubles comme des "numbers", et sont deuxième candidat n'est autre que la ligne de déclaration de la classe number

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    class number : public noeud {
    ....
    En fichier joint, il y a les deux versions de mon code

    src_std_ptr.tar.bz2 est la version qui compile, tourne, mais a d'énormes fuites (et dans laquelle je n'arrive pas à définir de destructeur)

    src_std_auto_ptr.tar.bz2 est la version avec des auto_ptr, qui confond les doubles et les objets de mes classes.

    Si quelqu'un sait d'où vient l'un ou l'autre des problèmes, je suis preneur, car c'est assez frustrant d'avoir un code dans lequel on n'arrive pas à mettre les destructeurs dans le premiers cas, et dans le deuxième qu'on n'arrive pas à tester.

    Merci bien.

    --
    Z.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Questions diverses sur les Arbres binaires + insertion d'un fils
    Par beegees dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 18/03/2008, 01h21
  2. Demande sur les arbres binaire
    Par IDE dans le forum C++
    Réponses: 12
    Dernier message: 02/12/2007, 17h55
  3. Les arbres binaire en java
    Par vincem35 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2007, 19h44
  4. Java et les arbres binaires
    Par Noutch dans le forum JBuilder
    Réponses: 1
    Dernier message: 17/08/2007, 14h25
  5. Le type Arbre binaire dans les bibliothèques standards ?
    Par sam69 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 10/05/2006, 13h50

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