Bonjour! Voilà j'ai un petit problème concernant la gestion de la mémoire lors de l'effacement. Mon but était de créer des structures et en définir une principale qui regroupe le tout de façon dynamique.
Ma première structure était:
La seconde était:Code:
1
2
3
4
5
6
7
8
9 typedef struct Dimension { int x; int y; int Width; int Height; int bits; } *Dimension_Screen;
Et la dernière qui regroupe le tout:Code:
1
2
3
4
5
6 typedef struct Information { string Title; string icon; } *Information_Window;
Voilà les trois structures. Bien sûr je me sert que de la troisième pour ma classe.Code:
1
2
3
4
5
6
7 typedef struct Device { Dimension_Screen dim; Information_Window iw; bool fullscreen; } *GUI_Device;
la classe ressemble à ça pour l'initialisation:
A l'initialisation de la classe GUI:Code:
1
2
3
4
5
6
7
8 class GUI { public: GUI(GUI_Device device); ~GUI(void); private: GUIDevice device;
Et le destructeur ou il y a le problème que je connais:Code:
1
2
3
4
5
6
7 GUI::GUI(GUI_Device device) { this->device = NULL; this->device = new GUIDevice; this->device = device; }
Je sais que c'est la que ça plante, à cause des autres structures dynamiques. Si quelqu'un connaissait un moyen de supprimer les structures à l'intérieur pour éviter d'avoir erreur de segmentation, je l'en remercie d'avance.Code:
1
2
3
4
5
6 GUI::~GUI(void) { if(this->device != NULL) delete[] this->device; }
J'avais aussi essayé ça, mais ça ne marche pas:
Code:
1
2
3
4
5
6
7
8
9
10 GUI::~GUI(void) { if(this->device != NULL) { delete[] this->device->Dimension_Screen; delete[] this->device->Information_Window; delete[] this->device; } }