Abgefangene Ausnahme | Fällt euch dazu was ein?



  • Hallo,
    mein Programm produziert in unregelmäßigen Abständen folgenden Fehler:
    "Nicht abgefangene Ausnahme in xyz.exe (MFC42D.DLL): 0xC0000005: Access Violation."

    Der Debugger wirft mich dann in die letzte Zeile dieses Abschnitts

    const CString& CString::operator=(const CString& stringSrc)
    {
    	if (m_pchData != stringSrc.m_pchData)
    	{
    		if ((GetData()->nRefs < 0 && GetData() != _afxDataNil) ||
     			stringSrc.GetData()->nRefs < 0)
    

    Fällt euch dazu was ein? Ich kann euch keine Codeausschnitte zeigen, weil das Programm schon relativ komplex ist und ich nicht den ganzen Quellcode veröffentlichen kann.

    Was fällt euch bei dem Fehler ein? Den hatte doch bestimmt schon einer vor mir, oder?

    Danke,
    Michael



  • Wenns bei CString's knallt hast du meist an anderer Stelle Speicherprobleme. Hab ich auch schon leidlich erfahren. Sind häufig ziemlich eklige Fehler, die gelegentlich schwer zu finden sind.
    Schmeiß den Debugger an und steppe durch deinen code. Gucke die alles was mit pointern zu tun hat ganz genau an. Nen besseren rat weiß ich nicht. Nur suche den Fehler nicht in der Klasse CString. Der liegt garantiert woanders.



  • Falls du DLLs mit ungleicher Runtime mischt kann das auch auftreten, z.B. das Programm verwendet die MFC42D.DLL und eine DLL die du im Programm verwendest die MFC42.DLL.

    Weiss jetzt nicht ob das genau die Stelle war, aber sowas ähnliches hatte ich schon oft mit ungleichen Runtimes.

    Guck dir auch mal die Adresse an die da angesprochen wird... kann auch oft weiterhelfen.



  • Mal sehen wie weit ich komme.

    Grüße,
    Michael


  • Mod

    Callstack ansehen!
    Wenn es auch in der Debug-Version kracht. In regelmässigen Abständen AfxCheckMemory aufrufen und das Ergebnis prüfen. Dann kannst Du sofort feststellen ab wann der Heap hopps geht, wenn es ein Heapfehler ist.


Anmelden zum Antworten