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
}