ich ein Problem mit valgrind habe: Das ist mein Programm (auch der Hauptteil, wo die Fehler auftreten):Valgrind: Ungültige Lese der Größe 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;}
Und wenn ich laufe valgrind heißt es:
Invalid read of size 1 at 0x401569: main (:395) Address 0x0 is not stack'd malloc'd or (recently) free'd
ich nicht herausfinden kann, was mit diesem Programm los ist.
Überprüfen Sie, ob 'p'' NULL' nach 'strtok' ist. – DCoder
Es könnte auch eine gute Idee sein, Programme unter einem Debugger auszuführen, um festzustellen, was sie falsch machen. –
Keine Notwendigkeit für einen Debugger hier, Valgrind genau sagt, was hier vorgeht. @ user1934103, bitte lesen Sie, was es Ihnen sagt. Welche Adresse könnte "0x0" an der Stelle sein, an der sie angezeigt wird? Also sagt es dir, dass "p" "0" ist. –