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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Partager