Ich habe ein Problem in meinem Projekt. Manchmal schlägt die Ausführung fehl mit dem Fehler "unabe, auf einen Lese-/Schreibort xxxxx zuzugreifen". Ich weiß, es ist ein Speicherfehler. Aber wie kann ich diesen Fehler verfolgen? Es schlägt bei der Speicherfreigabe einer Variablen fehl, wenn ich diese Zeile kommentiere, wird sie gut verarbeitet. Das heißt, der Speicher für diese Variable wurde bereits freigegeben. Früher hat es gut funktioniert, ich habe kürzlich Code hinzugefügt, aber ich habe nichts geändert, was damit zusammenhängt. Wie kann ich die Speicherbeschädigung dafür überprüfen?Überprüfen der Speicherbeschädigung in C++
Antwort
Mit den gegebenen Informationen müssen Sie Ihren gesamten Code, den Sie kürzlich hinzugefügt haben (wenn dies ein neues Problem ist), schrittweise durchlaufen und jede Zeile auswerten und prüfen, ob Sie Speicher stampfen. memcopy
ist ein Befehl, der diese Art von Fehler verursachen kann, wenn Sie zu viel für die Größe des zu kopierenden Objekts zuweisen.
Stellen Sie sicher, dass Sie nur Ihre Objekte (Zeiger) nur einmal löschen.
Verwenden Sie valgrind Wenn Sie unter Linux sind, zeigt es Ihnen genau, was passiert, wenn Sie Ihren Speicher stampfen.
Auf Windows: see here.
Nein. Ich bin auf Windows. mit VS 2008 Editor – Amaravathi
@Amaravathi Nun, warum hast du das nicht in deiner ursprünglichen Frage gesagt? Es hätte große Mengen geholfen. – Bojangles
Ich habe ein Problem mit der Speicherbeschädigung, außer wenn ich unter valgrind laufe, dann segmentiert es natürlich nie. –
Wenn Sie Windows verwenden, versuchen Sie WinDbg. Es ist das Beste und sehr kraftvoll.
Welches Betriebssystem, welchen Compiler und welche IDE verwenden Sie? –
Welche Plattform? Wie auch immer, googeln oder SO suchen, diese Frage wurde millionenfach zum Tod gebracht. –
@Amaravathi Wahrscheinlich gibt es eine doppelte Löschung in Ihrem Programm. Mit nur der Beschreibung ist es nicht möglich zu sagen, wo das Problem liegt. Replizieren Sie das Problem in ein kleines Programm und geben Sie den Code hier ein. – Mahesh