Pb de destructeur

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. Re,
      et si je fais

      delete [] cc;

      ai-je un pointeur fou ?

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

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