[C++][Vector & String][Memoire] Excep sur ~ d'un vecteur de string> 15

Excep sur ~ d'un vecteur de string> 15 [C++][Vector & String][Memoire] - C++ - Programmation

Marsh Posté le 10-10-2008 à 17:44:29    

Bonjour à tous  :hello:  
 
J'ai un pb "Debug Assertion Failled" sur un vecteur, mais ca me semble un peu tordu :
 
1) Je défini une structure contenant entre autre un vecteur de string

Code :
  1. typedef struct stMyStruct
  2. {
  3.     std::string strId;
  4.     std::vector<std::string> vectMyVect;
  5.     stMyStruct()
  6.     {
  7.         strId.reserve (255);
  8.         vectMyVect.reserve (10);
  9.     };
  10. }stMyStruct;


 
2) j'assigne une chaîne à l'élément vectMyVects d'un objet de type stMyStruct.
 

Code :
  1. std::string l_string = "123567890123456";
  2. p_stMyStruct->vectMyVect .push_back(l_string);


 
3) Lorsque mon destructeur de stMyStruct est appellé, je reçois une exception sur la désalloc de vectMyVect.
 
PAR CONTRE si en 2) je prend une chaîne de <= 15 char, ex "123567890123456", là ça passe.
Je pense donc que cela à un lien avec la capacity de la std::string dans le vecteur, mais là je bloque.
 
Quelqu'un pourrait t'il m'expliquer ce qui se passe, et (surtout) comment puis je utiliser des chaînes de plus de 15 char sans planter ?
 :(  :(


Message édité par Sagoth le 10-10-2008 à 20:14:16
Reply

Marsh Posté le 10-10-2008 à 17:44:29   

Reply

Marsh Posté le 10-10-2008 à 20:46:14    

Point de détails : 1/ typedef struct ne sert à rien en C++
 
Deuxio, donne du code compilable svp car la ton p_stMyStruct-> je sais pas te dire si t'as pas oublié de l'allouer :o

Reply

Marsh Posté le 13-10-2008 à 11:28:16    

Thx Joel.
 
1/ Thx pour le typedef, je ne savais pas.
 
2/ Pour le code compilable, c'est un peu délicat mais je suis en train d'essayer d'isoler le pb (sur un projet simple et vierge sur lequel je manipule le tout, pas de pb). Dès que je le reproduis dans un environnement exploitable j'essaye de le poster ici.

Reply

Sujets relatifs:

Leave a Replay

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