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 :

[CRecordSet CDatabase] Les pointeurs sur ces classes se libèrent ils tout seuls?


Sujet :

C++

  1. #1
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut [CRecordSet CDatabase] Les pointeurs sur ces classes se libèrent ils tout seuls?
    Bonjour à tous,
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Class A {
    protected:
      CDatabase * db;
      CRecordSet * rs;
    public:
      ...
    }
    Lorsque je détruit ces pointeurs dans le destructeur de ma classe, il génère une erreur (à l'exécution).
    Les destructeurs des classes CDatabase et CRecordSet prennent-ils en charge la déstruction de ces pointeurs ? (Cela me paraît étrange..)

  2. #2
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Points : 158
    Points
    158
    Par défaut
    Si tes pointeurs n'ont pas été initialisés, lorsqu'ils seront détruit avec un delete ca plantera.
    Assure toi que dans ton constructeurs ils sont bien initialisés, sinon ne les détruit pas dans le destructeur directement.

    ca répond a ta question?

  3. #3
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Ils sont correctement initialisé dans le pointeur, j'ai tracé avec le debug, tout fonctionne, même lorsque je ne les détruit pas dans le déstructeur.
    Seulement je crain la fuite de mémoire.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Ton erreur vient d'autre part, car tu dois bien les deleter dans le destructeur.
    Vérifie que tu n'as pas un problème de double destruction quelque part, pense à bien remettre le pointeur à NULL juste après le delete, etc.

  5. #5
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Points : 158
    Points
    158
    Par défaut
    Ah je viens peut etre d'avoir une idée de ton problème:

    lorsque tu fais appel a ton constructeur de recopie

    si tu as un objet A et que tu utilise le constructeur de recopie, tu obtiens un objet B:
    les 2objets pointent sur la meme zone mémoire...alors si tu détruits le premier, ya pas de soucis...en revanche si tu détruits le second, le pointeur est dans les choux

    en faisant un schéma c'est bcp plus clair si tu comprends pas ce que je viens de dire

  6. #6
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Bonjour, et merci pour vos réponses.
    Je pense que c'est effectivement quelque chose de ce type, mais pour faciliter les choses ne fait pas de pointeur sur objet, je prend les objets directement, ce sera plus simple et plus compréhensible.
    Encore merci.

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

Discussions similaires

  1. les pointeurs sur pointeurs ne m'aiment pas :/
    Par GhostNemo dans le forum C
    Réponses: 3
    Dernier message: 17/12/2006, 23h10
  2. Réponses: 8
    Dernier message: 30/05/2006, 01h26
  3. [C++] pointeur sur une classe
    Par PH69 dans le forum Débuter
    Réponses: 1
    Dernier message: 21/11/2005, 22h08
  4. Réponses: 14
    Dernier message: 14/03/2005, 09h16
  5. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17

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