2016-04-03 5 views
-5

Wie kann ich dieses Problem beheben, meinem Programm geht es gut, aber valgrind sagt mir immer wieder, dass ich Fehler mache.Valgrind ungültig schreiben der Größe 4

-Code enter image description here

Fehler enter image description here

ich herausfinden kann nicht, was in den Zeilen 104 falsch ist, und 11

+0

_ "Fragen, die Debugging-Hilfe suchen (" Warum funktioniert dieser Code nicht? ") Müssen das gewünschte Verhalten, ein spezifisches Problem oder einen Fehler und den kürzesten Code enthalten, um es in der Frage selbst zu reproduzieren Anweisungen sind für andere Leser nicht nützlich. Siehe: So erstellen Sie ein ** [MCVE] **. "_ –

+0

Beenden Sie die Verwendung von' new [] 'und verwenden Sie' std :: vector'. – PaulMcKenzie

Antwort

0

Es wäre einfacher, wenn Sie den Code in geklebt (mit schöner Einzug) statt eines Bildes. In jedem Fall scheint das Problem zu sein, dass Sie j von der for-Schleife dekrementieren.

for(int j=v[z]-1;j>=0;j--) { 
    for (int g=max_el;g > 0;g--) { // secondary problem. 
     p[k][j] = g; 
     j--;    // This is the problem. 
    } 
} 

Vielleicht statt:

for(int j=v[z]-1;j>=0;j--) { 
    int g=max_el; 
    p[k][j] = g; 
    --g; 
} 

Fest ohne die Daten zu sagen, aber es sieht aus wie Sie j dekrementiert, ohne die Grenzen j unter Berücksichtigung muss> = 0. Sie sicher zu debuggen versuchen könnte, Dies ist mit einem Debugger möglich, aber ich vermute, dass das einfache Drucken von Indizes beim Durchschleifen ein Licht auf einige Probleme wirft.