kernel32.dll fehler nach erfolgreicher ausführung
-
Habe mich vor einiger Zeit mal mit der Huffman-Komprimierung auseinandergesetzt und bin auf folgendes Problem gestoßen:
HUFFMAN verursachte einen Fehler durch eine ungültige Seite
in Modul KERNEL32.DLL bei 019f:bff7671f.
Register:
EAX=00000000 CS=019f EIP=bff7671f EFLGS=00010212
EBX=00000000 SS=01a7 ESP=0056ff94 EBP=00570064
ECX=0057007c DS=01a7 ESI=818f8048 FS=44c7
EDX=005703c8 ES=01a7 EDI=00570100 GS=0000
Bytes bei CS:EIP:
ff 75 fc 9d 57 8d bd 30 ff ff ff 6a 04 55 57 e8
Stapelwerte:Die Fehlermeldung tritt allerdings erst nach erfolgreicher Ausführung des Programms auf und auch lediglich beim Dekomprimieren!
Hatte alle Daten zunächst in einer Struktur zusammengefasst, was auch einwandfrei funktionierte.
Erst nach Umstellung auf eine Klasse ergab sich oben genanntes Problem.
Auch der Versuch zu Debuggen brachte keinen Erfolg, da das Programm komplett fehlerfrei abgearbeitet wird und erst NACH der letzten Programmzeile der Fehler auftritt.
Würde mich freuen, wenn jemand guten Rat hat und bin auch gerne bereit den sourcecode zuzuschicken.Beste Grüße,
gonse
-
@gonse,
das Problem ist relativ einfach. Du arbeitest
in einem ungültigem Speicherbereich.
Das kann folgende Gründe haben:+ du schreibst in Speicher welcher dir nicht gehört
+ du zerstörst etwas in einem Speicher der dir nicht gehört.Ohne den Code und die genaue Stelle
kann man jedoch nicht viel mehr sagen.
Du kannst ja mal den Codeausschnitt posten in dem
dieser Fehler auftritt.Bye Peter.
-
@Peter
Er hat doch geschrieben, dass es erst nach der Programmausführung auftritt!Die Begründung von dir ist aber richtig. Irgendwo im Programm wird eine wichtige Stelle im Speicher überschrieben.
@gonse
Überprüf nochmal genau deinen Quellcode, ob du nicht irgendwo einen Speicherüberlauf o. ä. hast.
Solch ein ähnliches Probleme hatte ich auch mal unter DOS. Allerdings war die Folge, dass das OS komplett abgestürtzt ist und ich immer wieder neustarten musste oder einfach die Fehlermeldung kam, dass die command.com ungültig sei (deswegen musste ich aber auch neustarten :().
-
Lasse mir mit 'new' Speicher vom Heap zusichern.
Habe mir auch einen eigenen Handler geschrieben, der aber nicht anspricht.
Hätte dort das Problem vermutet; habe es aber mehrfach kontrolliert und sehe
kein Problem.
Der Speicher wird auch wieder ordnungsgemäß mit 'delete[]' freigegeben.
Der Fehler tritt auch auf, wenn es nur um einige tausend Byte geht - also unabhängig von der Größe.Habt ihr noch Tips in diesem Zusammenhang?
Gonse