Hola,
Je fais actuellement mon projet de fin d'étude, et pour tester mes fuites mémoires, je ne sais pas si c'est correct de créer deux variables globales pour le constructeur et pour les destructeur et les incrémenter à chaque appel?
Bref en tout cas, à chaque fois que je crée une variable de mon type, le constructeur est appelé deux fois, je ne comprend pas pourquoi...(ce qui crée des fuites évidemment): j'aurai compris si c'était 3, ou 1:
je vous donne une partie de mon code:
il s'agit de créer une classe umh, element d'une liste doublement chaînée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class umh{ public: umh *mSuivant; umh *mPrecedent;
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
17
18
19
20 int nConstructeur=0,nDestructeur=0; void umh::testMemoire(void){ cout<<"Nombre de constructeur: "<<nConstructeur<<endl; cout<<"Nombre de destructeur: "<<nDestructeur<<endl; } umh::umh(Parametre a){ cout<<"Constructeur: "<<this<<endl; cout<<this<<endl; cout<<mSuivant<<endl; cout<<mPrecedent<<endl; nConstructeur++; mSuivant=NULL; mPrecedent=NULL; ....}
et donc je tappe dans le programme principal:
et la j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 umh testtt(a),u(a),c(a); testtt.testMemoire();
6 appels de constructeurs
evidemment 0 appels de destructeur
à la sortie du prgramme le destructeur est appelé 3 fois, ce qui me parait normal...
Ce que je ne comprend pas c'est les deux appels de constructeurs à la création de mes objets... Si vous voyez d'ou ça vient ....
Merci merci!
Partager