Invalid Address specified to RtlValidateHeap

sisela

Erfahrenes Mitglied
Hallo liebe Programmierfreunde,

ich habe ein Problem, bei dem ich mir nicht mehr helfen kann.

Ich bekomme folgende Fehlermeldung:
C:
HEAP: Invalid Address specified to RtlValidateHeap( 018F0000, 0012FCFC )

Im Stack wird versucht einen String wieder freizugeben, allerdings muss das irgendwie vom System aufgerufen werden, da ich dass nicht mache.

Bei der Funktion _CrtIsValidHeapPointer(const void * 0x0012fd1c)

ist dann Schluß.

hat jemand eine Idee?
 
Rück mal etwas mehr Infos raus.
Wann tritt wo der Fehler genau auf ? Debugger !
Benutzt du C++ , MFC ,... ?
Habe noch nie etwas von RtlValidateHeap gehört. Hat ja hoffentlich nichts mit dem Fernsehsender zu tun :rolleyes: :) :)

Grüßle
 
Warum unnötig kompizieren, wenn's so einfach sein kann? ;-)
Außerdem soll's auch ein kleiner Hinweis sein: Erst suchen, dann fragen!:)
 
Warum unnötig kompliziert ?
Weil es kaum die Antwort auf die Frage ist.
Oder meinst du er benutzt eine Apache AxisClient_D.dll ?

Bei dem anderen geb ich dir zu 100% Recht :-)
 
Hi,
also ich benutze C++ und die MFC im Visual Studio. Der Fehler trat beim Debuggen auf.

Meine Funktion wurde an sich abgearbeitet und in der letzten Zeile tritt auf einmal dieser Fehler auf. Die letzte Zeile an sich hat aber nichts mit dem eigentlichen Fehler zu tun. Das Programm, ich denke mal irgend ein Destruktor will einen Speicher für einen String frei machen. Das Problem ist, dass dieser String nicht von mir ist.

Ich weiß nun nicht genau was es mit der Funktion RtlValidateHeap auf sich hat.

PS.: Gesucht habe ich übrigens auch schon...

mfg
 
Warum unnötig kompliziert ?
Weil es kaum die Antwort auf die Frage ist.
Oder meinst du er benutzt eine Apache AxisClient_D.dll ?
Es muß ja nicht an dieser speziellen DLL liegen. Ich weiß ja nicht, was da alles compiliert und zusammengelinkt wird.
Ich habe nochmal etwas weitergesucht und herausgefunden, daß die Funktion RtlValidateHeap dafür da ist, im Debug-Modus den Heap zu überprüfen. Also weist Die Meldung darauf hin, daß irgendwas mit dem Speicher nicht in Ordnung ist. Um mehr zu sagen, wäre es nützlich, etwas mehr vom Code zu kennen.
 
Den kompletten Code zu posten würde wahrscheinlich den Rahmen sprengen. Das Problem tritt aber nicht mehr auf.
Ich habe versucht der
C:
afx_msg void OnRehadatD();
einen Parameter zu übergeben, nämlich einen CString.

In der Definition habe ich einen Defaultwert für diesen Parameter angegeben. Seitdem ich nun diesen entfernt habe funktioniert es. Aber wieso, weiß ich nicht.
 
Zurück