Ich habe etwas Code in MS VC++ 6.0, die ich debuggen bin. Aus irgendeinem Grund, an diesem bestimmten Punkt, wo ich versuche, etwas dynamisch zugewiesenen Speicher zu löschen, bricht es und ich bekomme eine Pop-up-Meldung mit der Meldung "User Breakpoint aus Code bei blah blah" aufgerufen .. dann erscheint das Disassembly-Fenster und ich sieheBenutzer Haltepunkt von nirgendwo
*memory address* int 3
Das seltsame ist, gibt es nirgendwo in dem Code, den ich eine Montageanleitung wie dies nenne (ich glaube, asm 3 int ist ein Hardware-Befehl break für x86?) ..
was könnte das verursachen?
BEARBEITEN: ANTWORT: Mein Code war "vom Ende gehen" eines Arrays, aber nur in den von Visual Studio Debuggen mit 0xFDFDFDFD, die eine NoMan'sLand Zaun genannt wird .. Ich denke, es ist auch eine angerufen Off-by-One-Fehler. Dieses Array hat nichts mit dem Punkt zu tun, an dem ich den Speicher freigab, als der Fehler auftrat. Das machte es schwieriger zu erkennen .. :(
Nur neugierig - haben Sie das gefunden, indem Sie die Assembly-Anweisungen einzeln durchlaufen haben, um herauszufinden, was der Debug-Heap nicht mochte oder ob ein anderes Tool/eine andere Technik hilfreich war? –
Ich schaute auf diese Seite http://www.highprogrammer.com/alan/windev/visualstudio.html, die besagt: dass 0xFDFDFDFD ein Speicherwert war, den der MSVC++ - Debugger verwendete, um eine Grenze in einem Array anzugeben, um Off-by-By zu erkennen ein Fehler .. Ich überprüfte meine Zeiger und Single trat durch die Iterationen in der .. – krebstar
Quellcode und festgestellt, dass ich eine meiner Arrays nicht richtig gebunden hatte .. Also ich denke, es war nur ein Fall von mir, meine Zeiger richtig zu überprüfen :) – krebstar