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

2 réponses

  1. 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
    1. pom
       
      Re,
      et si je fais

      delete [] cc;

      ai-je un pointeur fou ?

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

      pom
      0
  2. 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