Destruction d'un vecteur de classes

Destruction d'un vecteur de classes - C++ - Programmation

Marsh Posté le 07-08-2013 à 18:19:31    

Bonjour à tous  
 
J'ai une classe A qui a comme attribut :
std::vector<std::vecteur<B>> nom_attribut;
où B est une classe.
 
Le problème c'est que qu'on je fais la destruction de la classe A , l'erreur suivante survient:
 
Windows has triggered a breakpoint in project.exe.
 
This may be due to a corruption of the heap, which indicates a bug in project.exe or any of the DLLs it has loaded.
 
This may also be due to the user pressing F12 while project.exe has focus.
 
The output window may have more diagnostic information

 
En faisont un debug step by step j'ai vu que l'erreur se situe lors de la destrcution du vecteur <B>.
 
J'ai lu quelque part , que les instances de la classe B ne sont pas détruites et qu'il fallait faire une boucle avec un delete dedans. Mais je ne sais pas comment m'y prendre , je suis débutante avec le C++.
 
PS: Je suis sur windows XP et j'utilise visual studio 2010.
 
Merci beaucoup et bonne journée

Reply

Marsh Posté le 07-08-2013 à 18:19:31   

Reply

Marsh Posté le 07-08-2013 à 18:57:47    

Ton problème est différent. Ce qui se passe là, c'est que tu es allé écrire dans un espace mémoire qui ne t'était pas alloué.
Ca peut être causé par un débordement de tableau, un pointeur non initialisé ou pas mal d'autres choses ...
 


---------------
last.fm
Reply

Marsh Posté le 07-08-2013 à 19:26:59    

Donc le pb vient probablement d'un pointeur mal initialisé dans la classe B du type :

Code :
  1. class B{
  2.   public:
  3.     B(){
  4.        //Pas d'init de toto
  5.     }
  6.     ~B(){
  7.        delete toto;
  8.     }
  9.     private:
  10.        int *toto;
  11. }


 
ça peut faire un core au moment du destroy...

Reply

Marsh Posté le 07-08-2013 à 19:30:16    

Merci pour vos réponses rapides je vais voir ça et je vous tiendrai au courant

Reply

Marsh Posté le 08-08-2013 à 06:02:49    

Oui c'était bien ça , c'était des attributs non initialisés dans le constructeur de la classe B.  
Merci beaucoup

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed