Fuite de mémoire et agrégation
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 :
http://sdz-upload.s3.amazonaws.com/p...ad/explic1.png
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:
1 2 3 4 5 6 7 8 9 10 11
|
Videotheque::Videotheque()
{
tableauCoffret_ = new Coffret[6];
}
Videotheque::~Videotheque()
{
delete [] tableauCoffret_;
tableauFilm_=0;
} |
Code:
1 2 3 4 5 6 7 8 9 10
| Coffret::~Coffret()
{
delete [] tableauFilm_;
tableauFilm_=0;
}
Coffret::Coffret()
{
tableauFilm_ = new Film[6];
} |
Code:
1 2 3 4 5 6 7 8 9
|
Film::Film()
{
// tout simplement vide
}
Film::~Film()
{
// tout simplement vide
} |