Bonjour, j'ai des segfaults lorsque j'exécute mon code.
J'ai une classe comportant un pointeur et un destructeur (version simplifiée de mon code) :
Ensuite je construits un vecteur d'objets A et ça plante à cause de l'appel interne de vector au destructeur de A :
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 class A { private : img *b; }; A::A() { b = new img(); } A::~A() { if(b) delete b; }
si je comprends mon débugger, vector réalise des copies d'objets et appelle donc plusieurs fois les destructeurs, puis ça plante avec un *b qui pointe su n'importe quoi dans l'un des destructeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 vector <A> v; for (unsigned i; i < 5; ++i) v.push_back(A());
Si je vire le destructeur ça marche, mais j'aimerais écrire mon code proprement, que faire ? XD
Merci
Partager