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:
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;
La seconde était:
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;
Et la dernière qui regroupe le tout:
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;
Voilà les trois structures. Bien sûr je me sert que de la troisième pour ma classe.

la classe ressemble à ça pour l'initialisation:
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;
A l'initialisation de la classe GUI:
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;
}
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
 
GUI::~GUI(void)
{
         if(this->device != NULL)
                  delete[] this->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.

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;
         }
}