Bonjour,
Je cherche à effectuer un algorithme de plus court chemin successivement sur plusieurs graphe, pour ce faire j'utilise la boucle suivante:
for(i=0;i< indi[0].getNbPeriodes();i++)
{
//On regarde s'il y a à reévaluer
if(indi[0].getEvalSemaine(i)==-1)
{
//On construit le graphe
// cout<<"on va creer graphe \n";
double aDeverser =indi[0].getQuantiteSemaine(i);
Graphe G(pas,longueurPeriode,i*longueurPeriode,quantiteDeversee,aDeverser,&systeme);
cout <<"sommets créés : "<<G.getNbSommet()<<endl;
if(indi[0].getQuantiteSemaine(i)!=aDeverser)
{
double diff= indi[0].getQuantiteSemaine(i)-aDeverser;
indi[0].setQuantiteSemaine(i-1,indi[0].getQuantiteSemaine(i-1)+ diff);
indi[0].setQuantiteSemaine(i, aDeverser);
}
G.genererArcs();
//cout<<"on a cree graphe \n";
//On applique l'algorithme de Bellman
double eval = G.plusCourtChemin();
indi[0].setEvalSemaine(i,eval);
}
evaluation= evaluation+indi[0].getEvalSemaine(i);
quantiteDeversee= quantiteDeversee + indi[0].getQuantiteSemaine(i);
}
Mais à la 2eme itération lorsque je veux créer mon graphe j'obtiens l'erreur suivante :
deltaPlaningEA(2859,0x7fff7a144960) malloc: *** error for object 0x7f98494018b8: incorrect checksum for freed object - object was probably modified after being freed.
Qui a lieu plus exactement à l'endroit commenté ERREUR :
A vrai dire je cherche depuis plusieurs heures, mais je n'ai vraiment plus d'inspiration...
Auriez vous des suggestions quand à l'origine possible de ce bug?
Je remercie de part avance ceux qui auront le courage de se pencher sur ce problème
A voir également:
Comment debugger : incorrect checksum for freed object
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.