Speicherzugriffsfehler bei Zugriff auf Membervariable...



  • Ich habe mal wieder ein Problem...

    Eine nicht behandelte Ausnahme des Typs "System.AccessViolationException" ist in programm.exe aufgetreten.
    
    Zusätzliche Informationen: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
    

    Die entsprechende Quelltextzeile, bei der dieser Fehler kommt ist folgende:

    return this->m_vData[y * (this->m_iMapWidth) + x];
    

    Sie gehört zu einer Funktion, die ein 2D-Array in einem std::vector gespeichert hat. Durch ausprobieren habe ich jetzt herausgefunden, dass es nicht an dieser Zeile, sondern allegemein am Zugriff auf Klassenmember via this-Operator liegt. (Aber auch ohne gehts nicht :D).

    Hat jemand eine Idee, wie ich dieses Problem lösen könnte?

    Gruß, Birne



  • das ist normalerweise der Fall wenn this==NULL. oder seltener, wenn das Objekt scho deleted wurde.



  • Aber wie kommt es, dass this auf NULL gesetzt wurde?


  • Mod

    Birne94 schrieb:

    Aber wie kommt es, dass this auf NULL gesetzt wurde?

    Es wurd enicht aufg NULL gesetzt. Du benutzt einen NULL Zeiger zum Zigriff auf das Object:

    CMyObject *pMyObject = NULL;
    pMyObject->CrashIt(); // ;)
    


  • Ja, nur ist das Problem, dass das Objekt mMn. korrekt per new-Operator erstelltwurde:

    this->m_pMap = new Map(
    		this->m_pMapImage,
    		Graphics::inst().getBackBuffer(),
    		this->m_pWalkData);
    


  • okay, es hat sich geklärt, ich hatte irgendwo doch einen Zeiger noch nicht initialisiert 😃

    Trotzdem Danke...



  • Birne94 schrieb:

    okay, es hat sich geklärt, ich hatte irgendwo doch einen Zeiger noch nicht initialisiert 😃

    Trotzdem Danke...

    Ätsch. 🤡
    (Aber danke für die Rückmeldung.)


Anmelden zum Antworten