Bonjour,
J'ai un petit problème au niveau des fuites de mémoire. J'ai une classe Vidéothèque, une classe Coffret et une classe Film. La classe vidéothèque a comme attribut un pointeur vers un tableau dynamique de coffret (Coffret*) qui est alloué dans le constructeur par défault. Chaque coffret à un pointeur vers un tableau dynamique de films(Film*) qui est aussi alloué dans le constructeur par défault. Puisque une image vaut mille mots en voici une :
Lorsque le programme termine, il appelle le destructeur par défault de Vidéothèque où je fais : delete []tableauCoffret_; Selon ce que je comprends, le destructeur de vidéothèque appelle donc le destructeur de coffret qui est : delete []tableauFilm_;. Ensuite, celui-ci appelle le destructeur de Film qui est vide{}. Malheureusement, cela ne fonctionne pas et j'ai une erreur lors de l'éxécution à la fin du programme lors de l'appel du destructeur de vidéotheque.
File dbgdel.cpp line 52 expression L: _BLOCK_type_is_VALID(Phead->nblockuse)
Pourriez-vous m'éclairer sur mon erreur avec les destructeurs , merci beaucoup. Voici les destructeurs et constructeurs par défault de chacune des classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Videotheque::Videotheque() { tableauCoffret_ = new Coffret[6]; } Videotheque::~Videotheque() { delete [] tableauCoffret_; tableauFilm_=0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Coffret::~Coffret() { delete [] tableauFilm_; tableauFilm_=0; } Coffret::Coffret() { tableauFilm_ = new Film[6]; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Film::Film() { // tout simplement vide } Film::~Film() { // tout simplement vide }
Partager