Bonjour,

j'ai un problème, le destructeur d'une de mes classe n'est pas appellé lors d'un delete.

Ici je passe bien par le delete, l'objet Image recupere du tampon est bien valide avec des attributs memebres cohérents
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
      if (m_tampon_image->attendreFileImagesDecodeesPlusVide())
      {
        Image* im = m_tampon_image->defilerImageDecodee();
        
        if (im)
        {
          dessiner();
          delete im;
          m_compteur->tic();
        }
      }
Mais son destructeur n'est pas appelé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Image::~Image(void)
{
  if (m_donnees_fic)
    delete [] m_donnees_fic;
 
  if (m_pixels_decode)
    delete [] m_pixels_decode;
 
 
#if defined DEBUG_TAMPON_IMAGE
  fprintf(stderr,"Destructeur Image\n");
#endif
}
J'instancie mes images comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
  // creation d'une image
  im = new Image(header->width,header->height);
  // passage des donnees utiles
  im->setDonnees(donneespixels, donnees, entete, code_format_tga);
 
  return im;
Ma classe Image n'est pas heritee ni n'herite de quoi que ce soit, le destructeur n'est pas declaré virtuel...

Cela vous est il deja arrivé ?