Bonjour à tous,
J'ai un comportement bizarre lorsque j'essaie de libérer un double *, membre de ma classe.
Voici les détails :
Dans une autre classe, je manipule un std::vector<CPolygon> et au moment du resize, ça plante dans le constructeur de copie dans le for() car this->bounds n'est pas correctement initialisé (0xcdcdcd).
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 //header class CPolygon { public: CPolygon(); virtual ~CPolygon(); CPolygon( const CPolygon &); std::vector<double> pts; double* bounds; }; //implem CPolygon::CPolygon() { bounds=0; } CPolygon::~CPolygon() { if(bounds) { delete []bounds; bounds=0; } } CPolygon::CPolygon( const CPolygon &poly) { if(!bounds) bounds = new double[4]; if(poly.bounds) { for(int i=0; i<4; i++) this->bounds[i] = poly.bounds[i]; } }
Je ne comprends pas ce comportement vu que je pensais avoir tout fait pour allouer correctement mon bounds dans tous les cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //std::vector<CPolygon> klines if(klines.size()==0) { CPolygon nullpoly; klines.resize(2,nullpoly); ... }
Quelqu'un peut-il m'expliquer le soucis ?
Merci par avance.
Partager