Pb de destructeur

pom -  
 pom -
Bonjour, mon destructeur entraine un segmentation fault.
J'ai fait une classe YP qui contient des objets d'une classe Vector.

Voici une partie de la classe Vector

template <class T> class Vector
{
public:
T *cc;
int size;

Vector(int csize = 0){init (csize);}
void init(int csize = 0);
void destroy()
{
if(cc!=NULL)
{
delete [] cc;
size = 0;
}
}
~Vector()
{
destroy();
}

blabla
};

Voici ma classe YP

typedef Vector<escalar> VEC;

class YP
{
public:

VEC phix;
VEC phiy;

YP(const VEC & phix_,const VEC & phiy_):phix(phix_),phiy(phiy_) {}

~YP()
{
phix.destroy();
phiy.destroy();
}

blabla
};

Je n'arrive pas à voir la cause de mon segmentation fault.

Pom
A voir également:

2 réponses

marvinrouge
 
if(cc!=NULL)
{
delete [] cc;
cc = NULL; // IL TE MANQUAIT CETTE LIGNE
size = 0;
}

en effet tu appelles destroy() explicitement
mais desroy() est AUUSI appelée par ton destruteur
(donc dans ce 2ème appele tu fais delete d'une zone DEJA délétée ... ;-) )

à bientôt,

marvinrouge
0
pom
 
Re,
et si je fais

delete [] cc;

ai-je un pointeur fou ?

dois-je faire systématiquement
delete [] cc;
cc=NULL;

pom
0
pom
 
Merci beaucoup !

Mais aurais-je pu ne pas faire de destructeur de ma classe YP car mes Vector auraient-été détruits par le destructeur de la classe Vector ou pas ?

Merci encore
Pom
0