Sto avendo un problema con valgrind: Questo è il mio programma (bene la parte principale in cui compaiono gli errori):Valgrind: lettura non valido di dimensioni 1
int main()
{
char comanda[N];
....
char *p;
while(fgets(comanda,100,stdin)!=NULL)
{
p=strtok(comanda," \n");
if (strcmp(comanda,"INIT")==0)
{
p=strtok(NULL," ");
Init(n);
}
395 >>if (strcmp(p,"DUMP")==0)
{
Dump(n);}
if (strcmp(p,"ALLOC")==0)
{
Alloc(j,n);
}
....return 0;}
E quando ho eseguito valgrind che dice:
Invalid read of size 1 at 0x401569: main (:395) Address 0x0 is not stack'd malloc'd or (recently) free'd
io non riesco a capire qual è il problema con questo programma.
Controllare se 'p' è' NULL' dopo 'strtok'. – DCoder
Potrebbe anche essere una buona idea eseguire programmi sotto un debugger per determinare cosa stanno facendo male. –
Non c'è bisogno di un debugger qui, valgrind dice esattamente cosa sta succedendo qui. @ user1934103, leggi cosa ti sta dicendo. Quale indirizzo potrebbe essere '0x0' nel posto che sta indicando? Quindi ti sta dicendo che 'p' è' 0'. –