totoscill
Messages postés48Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention10 décembre 2009
-
18 juin 2007 à 18:01
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
18 juin 2007 à 18:17
Bonjour!
j'utilise un tableau [i][3] mais il fait planté mon appli.
Je pense que je l'ai mal déclarer mais je vois pas mon erreur.
mes tableau accepte des nombres flottants.
Il fait planter mon programme dès que je veux écrire dedans:
Visual Studio just in time debugger:
"An unhandled Win 32 exception occured in Post Processing.exe
Exception non gérée à 0x00415767 dans CAPI_PostProcessing.exe : 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0xfdfdfdfd."
Voici mon prog raccourcis:
#include
"stdafx.h"#include
<conio.h>#include
#include
<fstream>#include
<string>#include
<cmath>#include
<conio.h>using
namespace std;
char
FileName[256];
bool
is_readable(
const string & file ) {
ifstream FileName ( file.c_str() );
return !FileName.fail(); }
void
_tmain(
int argc, _TCHAR* argv[]){
float CalValues;
float InitPointX,InitPointY;
float DistX,DistY;
char FileName[256];
char Psimu;fstream File;
string line;
float Power,Dir;
float DistRel,DistAbs;
int NbMeas;size_t size = line.size()+ 1000000;
char *InfoLine=
new
char[size];
int i,j,l,NbMaxValues;NbMaxValues=100000;
float ** ConvertValues;
float ** Values_To_At;
/*** allocation dynamique de mémoire ***/ConvertValues=
return}mon programme récupère des infos dans un fichier. Ces infos sont enregistrer dans mon tableau puis convertit pour être envoyé vers un autre tableau qui me permettra d'écrire un fichier avec mes infos convertit.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 18 juin 2007 à 18:17
Ton code est extrêmement dur à lire.
J'ai tout de même repéré ceci:
ConvertValues[i]=
newfloat[2];
ainsi que
Values_To_At[l]=
newfloat[2];
avec
ConvertValues[i][2]=Power;
et
Values_To_At[i][2]=ConvertValues[i][2];
Tu alloues de la mémoire pour 2 float mais tu essais d'en stocker 3.
Aussi, je ne vois aucun endroit ou tu test i dans ta boucle while(getline...). D'après ce que je peux comprendre, s'il y a plus de 3 lignes, tu écris en dehors du buffer.
Dans les deux cas si-dessus, tu as un buffer overflow.