Bonjour,
J'ai rencontré cette fameuse erreur en manipulant un vecteur dans mon code... et là chose étonnante c'est que je n'ai pas manipulé explicitement la mémoire avec un free ou avec un destructeur etc... d'une manière incorrecte, et pourtant ce sont les principales causes pour cette erreur si j'ai bien suivi.
Voici mon code :
L'objectif ici est de stocker tous les objets de type CDart dans un vecteur en utilisant la fonction next de la classe CDart. (Dans la pratique ces objets sont liés entre eux par une liste chainée). A la fin je réajoute l'élément de début (ça m'est utile par la suite, car j'y ajouterai plusieurs listes chainées consécutives et la répétition de cet élément me servira de point de repère dans mon vecteur).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 vector<CDart> fonction(CDart* d){ vector<CDart> vect; CDart* dartCourante = d; vect.push_back(*dartCourante); do{ vect.push_back(*dartCourante); dartCourante = dartCourante->next(); }while(isEqual(dartCourante->next(), d->next() == false); vect.push_back(*d); return vect; }
Après des tests pour voir ce qui pose problème, je m'aperçois que c'est l'ultime ajout dans le vecteur qui est en défaut... mais pas systématiquement.
Je ne vois vraiment pas en quoi j'ai tripatouillé la mémoire de manière incorrecte... quelqu'un peut m'aider ?
Merci d'avance !
Partager