Brauche Hilfe bei Fehlermeldung



  • Ich habe eine Konsolenanwendung geschrieben die auf eine DLL zugreift, bekomme aber permanent folgende Fehlermeldung:

    Debug Assertion Failed!
    Programm:....exe
    File:dbgheap.c
    Line: 1011
    
    Expression: _CrtIsValidHeapPointer(pUserData)
    ...
    

    keine Ahnung was das bedeutet, aber ich denke es hat etwas mit Speicherreservierung zu tun.

    Habe dazu ach was im Netz gefunden, was mir aber auch nicht weiter hilft.
    http://support.microsoft.com/kb/q154744/

    Demnach hat es was mit einem Upgrade von MFC zu tun, ich nutze aber weder MFC noch hab ich ein Upgrade gemacht.

    Der komplette Code wäre hier zu lang.
    Nur soviel, ich exportiere aus der DLL eine Funktion die mir Speicher reserviert, und eine Funktion die den Speicher wieder löscht.
    Beide werden dann in der Anwendung aufgehoben.



  • Irgendwie scheinst du auf ungültigen Speicher zuzugreifen.
    (Vielleicht nach dem freigeben?)
    Ist der Pointer richtig initalisiert?
    Sind sämtlichen Variablen, die du ausliest, mit einem Wert initialisiert?

    Mehr kann ich deiner Beschreibung nicht entnehmen.



  • *hier stand müll*



  • Hmm, ich benutze ein paar mal folgende Form:

    Header[i]=buf[i];
    

    Hier handelt es sich um zwei Felder,
    oder auch

    Speicher[1]=Speicher2[1];
    .
    .
    .
    Speicher[20]=Speicher2[20];
    

    Ist soetwas zulassig?

    Ach ja im Debug Modus kommt folgende Meldung:

    Thread 0x954 wurde mit Code 0 (0x0) beendet.
    Thread 0x8CC wurde mit Code -1073741510 (0xC000013A) beendet.
    Das Programm "C:.....\Debug\ClientAnwendung.exe" wurde mit  Code -1073741510 (0xC000013A) beendet.
    


  • Ich habe jetzt die gleiche Fehlermeldung bei einem anderen Prog???
    In diesem benutze ich allerdings gar keine Speicher vielleicht wird ja jemand daraus schlau:
    EDIT: hier hab ich den Fehler





  • Hat mir auch nicht geholfen der Debugger sagt folgendes:

    Invalid Address specified to RtlValidateHeap
    

    Hab gelesen das wäre ein sogennannter LowLevel Breakpoint?????
    Das wiederum wäre ein :

    ne lowlevel breakpoint isn ass call der auf "int 3" oder oxcc zeigt

    aber wie bekomme ich ihn weg?


Log in to reply