Bonjour � toutes et � tous,

Comment faire pour lib�rer la m�moire d'un tableau de double qui est dans une classe d�riv�e d'une classe abstraite 'Base' et instanci�e suivant cette derni�re ? Par exemple:

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
19
20
21
22
23
24
25
26
27
28
29
Class Animal {
protected :
public :
    virtual int GetPoils() = 0;
};
 
Class Chat:public Animal{
  public: 
    int GetPoils() { return toto[0];}
    Chat(){
        toto = (double *) malloc(2 * sizeof(double));
        toto[0] = 1.0; 
        toto[1] = 2.0;
    }
    ~Chat(free(toto));
  private:
    double * toto;
 
};
 
Class Simulation {
  private:
    Animal * mon_animal;
 
  public:
    int main(void){
      mon_animal = &Chat();
    }
};
Ici, le destructeur de Chat() est bien appel� mais le free(toto) g�n�re un dump core. Si je supprime free(toto); pas de probl�me, mais je suppose que je g�n�re une fuite m�moire (toto n'�tant pas d�sallou�). Je suppose que c'est li� au fait que Simulation d�truit le pointeur 'mon_animal' dans la foul�e.

Bien sur il existe la solution d'utiliser un std::vector mais si on se r�f�re � ce probl�me en particulier, il faudrait que j'appelle le destructeur de la classe d�riv�e avant qu'il ne soit appel� par d�faut lors de la destruction de la classe l'utilisant (provoquant alors une fuite m�moire) ? je ne suis pas sur de comprendre l'origine du probl�me.

Merci pour votre aide!