[Débutant]Problème en mode Debug Seulement
biklil
-
biklil Messages postés 1 Statut Membre -
biklil Messages postés 1 Statut Membre -
Bonjour,
J'ai un petit problème avec ce code
l'application marche super bien en mode realese mais une fois sur Debug ça plante avec l'erreur suivante :
[B][SIZE="2"]Exception non gérée à 0x7c911230 dans BackGround_ForeGround.exe: Point d'arrêt utilisateur.[/SIZE]
[CODE]if (!HeapValidate(_crtheap, 0, NULL))
{
if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
{
_doserrno = ERROR_CALL_NOT_IMPLEMENTED;
errno = ENOSYS;
}
else
retcode = _HEAPBADNODE;
}
return retcode;
}[/CODE]
[/B]
et mon code le voilà :
[CODE]void CTelemetre::Ecriture_Fichier_Trajectoire(CString fichier_resultat)
{
[LIST=1]
[*]// Affichage des trajectoires
[*] // Graphe 2
[*] Xmin = Xmin1;
[*] Ymin = Ymin1;
[*] Xmax = Xmax1;
[*] Ymax = Ymax1;
[*] g1->Plume(NOIR);
[*] g1->Viewport(52,97,5,98);
[*] g1->Echelle(Xmin, Xmax, pax, ifx);
[*] g1->Echelle(Ymin, Ymax, pay, ify);
[*] g1->Clear(BLANC);
[*] g1->Window(Xmin, Xmax, Ymin, Ymax);
[*] g1->Grid(pax,pay);
[*] g1->Grad_X(Ymin, pax, ifx);
[*] g1->Grad_Y(Xmin,pay,ify);
[*] Afficher_Marquage_Central(g1);
[*] // Trajectoires intéressantes
[*] if (compt>0)
[*] {
[*] CVehicule* traj_temp = new CVehicule[compt];
[*] FILE* fichier_trajectoire = fopen(fichier_resultat, "a");
[*]
[*] fprintf(fichier_trajectoire, Fichier_telemetre.Mid(1+Fichier_telemetre.ReverseFind(_T('\\')))+"\n");
[*] for (int k=1;k<numero;k++)
[*] {
[*] int valeur=0;
[*] int* index = new int[compt];
[*] for (int i=0;i<compt;i++)
[*] {
[*] if (traj[i].numero==k)
[*] {
[*] index[valeur]=i;
[*] valeur++;
[*] }
[*] }
[*] if (valeur > 40)
[*] {
[*] int nbre_position[8] = {0};
[*] char sens;
[*] // Détermination du sens de circulation du véhicule
[*] if (traj[index[1]].posVeh[0] < traj[index[39]].posVeh[0])
[*] {
[*] sens = 'D';
[*] } else {
[*] sens = 'G';
[*] }
[*]
[*] for (i=0;i<valeur;i++)
[*] {
[*] traj[index[i]].sens= sens;
[*] // calcul de la vitesse par les échos telemetres
[*] [COLOR="Red"]traj[index[i]].Vitesse=Calcul_Vitesse(traj,max(0,i-1),i);[/COLOR]
[*] if (traj[index[i]].Vitesse>35 || traj[index[i]].Vitesse<0.0001) // pour eviter les vitesses incoherentes
[*] traj[index[i]].Vitesse = traj[index[max(0,i-1)]].Vitesse;
[*] // position
[*] traj_temp[i].posVeh[0] = traj[index[i]].posVeh[0];
[*] traj_temp[i].posVeh[1] = traj[index[i]].posVeh[1];
[*] traj_temp[i].Vitesse = traj[index[i]].Vitesse;
[*] traj_temp[i].Temps_PC = traj[index[i]].Temps_PC;
[*] }
[*] CVehicule* traj_lissee = new CVehicule[valeur];
[*] Lissage_Trajectoire(traj_temp, valeur, traj_lissee);
[*] TracerTrajectoireLissee(traj_lissee, valeur, numero);
[*]
[*]
[*] int position_moy = 0;
[*] double vitesse_moy = 0;
[*] UpdateData(true);
[*] for (i=0;i<valeur;i++)
[*] {
[*] // Position du véhicule sur la chaussée
[*] Calcul_Position_Chaussee(index[i],traj_lissee[i].posVeh[0], traj_lissee[i].posVeh[1], traj[index[valeur-1]].Largeur,sens, m_largeur_chaussee);
[*] traj_temp[i].position = traj[index[i]].position;
[*] nbre_position[traj[index[i]].position]++;
[*] vitesse_moy += traj[index[i]].Vitesse;
[*] // Ecriture du fichier Trajectoire
[*] fprintf(fichier_trajectoire,"%I64d\t%d\t%c\t%d\t%f\t%d\t%f\t%f\t", traj[index[i]].Temps_PC,NUMERO,traj[index[i]].sens,traj[index[i]].position,traj[index[i]].ecart,traj[index[i]].image,traj[index[i]].posVeh[0],traj[index[i]].posVeh[1]);
[*] fprintf(fichier_trajectoire,"%f\t",traj[index[i]].Vitesse);
[*] fprintf(fichier_trajectoire,"%f\t%f\tX[]=",traj[index[valeur-1]].Longueur, traj[index[valeur-1]].Largeur);
[*] for (int j=0;j<traj[index[i]].Taille_XY;j++)
[*] fprintf(fichier_trajectoire," %f",traj[index[i]].Point_X[j]);
[*] fprintf(fichier_trajectoire," Y[]=");
[*] for (j=0;j<traj[index[i]].Taille_XY;j++)
[*] fprintf(fichier_trajectoire," %f",traj[index[i]].Point_Y[j]);
[*] fprintf(fichier_trajectoire,"\n");
[*] }
[*] int *maxi;
[*] maxi = max_element(nbre_position,nbre_position+8);
[*] for (i=0;i<8;i++)
[*] if (*maxi == nbre_position[i])
[*] position_moy = i;
[*] // Vitesse moyenne (en m/s)
[*] vitesse_moy /= valeur;
[*] delete[] traj_lissee;
[*]
[*] int Sens = (sens=='D') ? 1 : 0;
[*] Gstatistiques.Tracer_Statistiques(position_moy, vitesse_moy, Sens);
[*]
[*] UpdateData(false);
[*] if (m_courbes_vitesse)
[*] {
[*] GVitesse.Tracer_Courbe_Vitesse(traj_temp,valeur, vitesse_moy);
[*] GVitesse.DoModal();
[*] }
[*] if (m_position)
[*] {
[*] Gposition.Tracer_Courbe_Position(traj_temp, valeur, position_moy);
[*] Gposition.DoModal();
[*] }
[*] NUMERO++;
[*] }
[*]
[*]
[*] delete[] index;
[*]
[*] }
[*] fprintf(fichier_trajectoire,"\n");
[*] fclose(fichier_trajectoire);
[*]
[*] delete[] traj_temp;
[*] }
[*]}[/CODE]
[/LIST]
j'ai mis en rouge la ligne (50) où je pense il fait planter l'appli parce que si je met cette ligne en commentaire ça marche, mais avec des resultats bizarre à la fin voilà.
Merci.
J'ai un petit problème avec ce code
l'application marche super bien en mode realese mais une fois sur Debug ça plante avec l'erreur suivante :
[B][SIZE="2"]Exception non gérée à 0x7c911230 dans BackGround_ForeGround.exe: Point d'arrêt utilisateur.[/SIZE]
[CODE]if (!HeapValidate(_crtheap, 0, NULL))
{
if (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
{
_doserrno = ERROR_CALL_NOT_IMPLEMENTED;
errno = ENOSYS;
}
else
retcode = _HEAPBADNODE;
}
return retcode;
}[/CODE]
[/B]
et mon code le voilà :
[CODE]void CTelemetre::Ecriture_Fichier_Trajectoire(CString fichier_resultat)
{
[LIST=1]
[*]// Affichage des trajectoires
[*] // Graphe 2
[*] Xmin = Xmin1;
[*] Ymin = Ymin1;
[*] Xmax = Xmax1;
[*] Ymax = Ymax1;
[*] g1->Plume(NOIR);
[*] g1->Viewport(52,97,5,98);
[*] g1->Echelle(Xmin, Xmax, pax, ifx);
[*] g1->Echelle(Ymin, Ymax, pay, ify);
[*] g1->Clear(BLANC);
[*] g1->Window(Xmin, Xmax, Ymin, Ymax);
[*] g1->Grid(pax,pay);
[*] g1->Grad_X(Ymin, pax, ifx);
[*] g1->Grad_Y(Xmin,pay,ify);
[*] Afficher_Marquage_Central(g1);
[*] // Trajectoires intéressantes
[*] if (compt>0)
[*] {
[*] CVehicule* traj_temp = new CVehicule[compt];
[*] FILE* fichier_trajectoire = fopen(fichier_resultat, "a");
[*]
[*] fprintf(fichier_trajectoire, Fichier_telemetre.Mid(1+Fichier_telemetre.ReverseFind(_T('\\')))+"\n");
[*] for (int k=1;k<numero;k++)
[*] {
[*] int valeur=0;
[*] int* index = new int[compt];
[*] for (int i=0;i<compt;i++)
[*] {
[*] if (traj[i].numero==k)
[*] {
[*] index[valeur]=i;
[*] valeur++;
[*] }
[*] }
[*] if (valeur > 40)
[*] {
[*] int nbre_position[8] = {0};
[*] char sens;
[*] // Détermination du sens de circulation du véhicule
[*] if (traj[index[1]].posVeh[0] < traj[index[39]].posVeh[0])
[*] {
[*] sens = 'D';
[*] } else {
[*] sens = 'G';
[*] }
[*]
[*] for (i=0;i<valeur;i++)
[*] {
[*] traj[index[i]].sens= sens;
[*] // calcul de la vitesse par les échos telemetres
[*] [COLOR="Red"]traj[index[i]].Vitesse=Calcul_Vitesse(traj,max(0,i-1),i);[/COLOR]
[*] if (traj[index[i]].Vitesse>35 || traj[index[i]].Vitesse<0.0001) // pour eviter les vitesses incoherentes
[*] traj[index[i]].Vitesse = traj[index[max(0,i-1)]].Vitesse;
[*] // position
[*] traj_temp[i].posVeh[0] = traj[index[i]].posVeh[0];
[*] traj_temp[i].posVeh[1] = traj[index[i]].posVeh[1];
[*] traj_temp[i].Vitesse = traj[index[i]].Vitesse;
[*] traj_temp[i].Temps_PC = traj[index[i]].Temps_PC;
[*] }
[*] CVehicule* traj_lissee = new CVehicule[valeur];
[*] Lissage_Trajectoire(traj_temp, valeur, traj_lissee);
[*] TracerTrajectoireLissee(traj_lissee, valeur, numero);
[*]
[*]
[*] int position_moy = 0;
[*] double vitesse_moy = 0;
[*] UpdateData(true);
[*] for (i=0;i<valeur;i++)
[*] {
[*] // Position du véhicule sur la chaussée
[*] Calcul_Position_Chaussee(index[i],traj_lissee[i].posVeh[0], traj_lissee[i].posVeh[1], traj[index[valeur-1]].Largeur,sens, m_largeur_chaussee);
[*] traj_temp[i].position = traj[index[i]].position;
[*] nbre_position[traj[index[i]].position]++;
[*] vitesse_moy += traj[index[i]].Vitesse;
[*] // Ecriture du fichier Trajectoire
[*] fprintf(fichier_trajectoire,"%I64d\t%d\t%c\t%d\t%f\t%d\t%f\t%f\t", traj[index[i]].Temps_PC,NUMERO,traj[index[i]].sens,traj[index[i]].position,traj[index[i]].ecart,traj[index[i]].image,traj[index[i]].posVeh[0],traj[index[i]].posVeh[1]);
[*] fprintf(fichier_trajectoire,"%f\t",traj[index[i]].Vitesse);
[*] fprintf(fichier_trajectoire,"%f\t%f\tX[]=",traj[index[valeur-1]].Longueur, traj[index[valeur-1]].Largeur);
[*] for (int j=0;j<traj[index[i]].Taille_XY;j++)
[*] fprintf(fichier_trajectoire," %f",traj[index[i]].Point_X[j]);
[*] fprintf(fichier_trajectoire," Y[]=");
[*] for (j=0;j<traj[index[i]].Taille_XY;j++)
[*] fprintf(fichier_trajectoire," %f",traj[index[i]].Point_Y[j]);
[*] fprintf(fichier_trajectoire,"\n");
[*] }
[*] int *maxi;
[*] maxi = max_element(nbre_position,nbre_position+8);
[*] for (i=0;i<8;i++)
[*] if (*maxi == nbre_position[i])
[*] position_moy = i;
[*] // Vitesse moyenne (en m/s)
[*] vitesse_moy /= valeur;
[*] delete[] traj_lissee;
[*]
[*] int Sens = (sens=='D') ? 1 : 0;
[*] Gstatistiques.Tracer_Statistiques(position_moy, vitesse_moy, Sens);
[*]
[*] UpdateData(false);
[*] if (m_courbes_vitesse)
[*] {
[*] GVitesse.Tracer_Courbe_Vitesse(traj_temp,valeur, vitesse_moy);
[*] GVitesse.DoModal();
[*] }
[*] if (m_position)
[*] {
[*] Gposition.Tracer_Courbe_Position(traj_temp, valeur, position_moy);
[*] Gposition.DoModal();
[*] }
[*] NUMERO++;
[*] }
[*]
[*]
[*] delete[] index;
[*]
[*] }
[*] fprintf(fichier_trajectoire,"\n");
[*] fclose(fichier_trajectoire);
[*]
[*] delete[] traj_temp;
[*] }
[*]}[/CODE]
[/LIST]
j'ai mis en rouge la ligne (50) où je pense il fait planter l'appli parce que si je met cette ligne en commentaire ça marche, mais avec des resultats bizarre à la fin voilà.
Merci.
A voir également:
- [Débutant]Problème en mode Debug Seulement
- Mode avion - Guide
- Mode sécurisé - Guide
- Mode d'emploi - Guide
- God mode - Guide
- Mode suivi des modifications - Guide