delete []double et std::vector::resize()
Bonjour à tous,
J'ai un comportement bizarre lorsque j'essaie de libérer un double *, membre de ma classe.
Voici les détails :
Code:
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];
}
} |
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:
1 2 3 4 5 6 7 8
| //std::vector<CPolygon> klines
if(klines.size()==0)
{
CPolygon nullpoly;
klines.resize(2,nullpoly);
...
} |
Je ne comprends pas ce comportement vu que je pensais avoir tout fait pour allouer correctement mon bounds dans tous les cas.
Quelqu'un peut-il m'expliquer le soucis ?
Merci par avance.