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:
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.
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(); } };
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!
Partager