Bonjour,

j'ai un problème lorsque je veux
libérer la mémoire allouée dans une classe.

J'ai un vecteur de vecteur d'une classe Test

que j'initialise dans le constructeur comme ceci:


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
  matrice.resize(6);
 
 
   vector<vector<Test> >::iterator i;
   vector<Test>::iterator j;
 
   for (i = matrice.begin(); i != matrice.end(); ++i)
   {
      i->resize(7);
 
      for (j = i->begin(); j != i->end(); ++j)
      {
 
         Slot& s = *(new Test());
         *j = s;
 
      }
   }
Lorsque j'essaye de libérer la mémoire dans le destructeur avec

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
   for (i = matrice.begin(); i != matrice.end(); ++i)
   {
 
      for (j = i->begin(); j != i->end(); ++j)
      {
 
         Test &s = *j;
 
         delete &s;
 
      }
   }
Le compilateur me dit que le pointeur est invalide je suis un débutant
en c++ et je ne trouve pas une solution à mon problème.