Was bedeutet "CRT erkannt, dass die Anwendung nach Ende des Heap-Puffers in den Speicher geschrieben hat"?

7

Ich habe Probleme mit diesem Code. Es bricht bei der freien (q- & gt; izv) -Funktion und ich bekomme einen Debug-Fehler, der sagt:

%Vor%

Ich habe keine Ahnung, was das bedeutet, also wäre ich dankbar für jede Hilfe, die ich bekomme.

%Vor%

Vielen Dank im Voraus

    
user3699827 04.06.2014, 13:50
quelle

1 Antwort

23
  

Was bedeutet "CRT erkannt, dass die Anwendung nach Ende des Heap-Puffers in den Speicher geschrieben hat"?

Angenommen, Sie ordnen einen Heap-Puffer zu:

%Vor%

OK, buffer zeigt jetzt auf fünf Zeichen auf dem Heap.

Angenommen, Sie schreiben sechs Zeichen in diesen Puffer:

%Vor%

Sie haben den Haufen jetzt beschädigt; Du darfst nur fünf Zeichen schreiben und hast sechs geschrieben.

Das Programm darf nun was auch immer tun. Es kann normal arbeiten, es kann abstürzen, es kann alle Ihre Passwörter an Hacker in China senden, alles .

Ihre Implementierung wählt anscheinend die bestmögliche Wahl, die "Sie darüber informiert, dass Sie einen Fehler gemacht haben". Du solltest sehr, sehr glücklich sein, dass dies passiert ist, anstatt einer der schrecklichen Alternativen. Leider informiert es Sie wenn der Puffer freigegeben wird und nicht wenn Sie den Fehler gemacht haben , aber seien Sie froh, dass Sie überhaupt einen Fehler bekommen haben.

    
Eric Lippert 04.06.2014 20:59
quelle

Tags und Links