Programm stürzt ab



  • Hallo

    Ich hab in meinem Programm einen bestimmten Header mit zugehöriger .cpp Datei eingebunden, von der ich ein paar Funktionen benötige. Funktioniert auch alles gut soweit.
    Nur in einer bestimmten Funktion ist offensichtlich ein Bug.

    Ich hab herausgefunden dass das Programm genau an folgender Stelle in dieser Funktion crashed:

    float* f1 = (float*)(DWORD)0x244887E4;
    float f2 = *f1;
    

    Lässt sich problemlos kompilieren, aber wie gesagt, es verursacht eben beim aufrufen der Funktion an der besagten Stelle den Absturz.

    Wie kann ich das reparieren?

    Die Variable f1 kommt in der ganzen Funktion nicht mehr ins Spiel.
    Die Variable f2 hat nur noch folgende Aufgabe in dieser Funktion:

    if( f2 >= 80.0f ){
       // ...
    }
    

    Schon mal vielen Dank für eure Hilfe!!



  • float* f1 = (float*)(DWORD)0x244887E4; //hier soll ein floatzeiger (f1) an die Adresse 0x244887E4 im speicher zeigen.
    
    float f2 = *f1; //Der WErt an diese adresse soll f2 zugewissend werden.
    

    wahrscheinlich gibts an diese stelle im speicher kein"gültigen" float wert. etc. deswege nabstutz



  • BorisDieKlinge schrieb:

    deswege nabstutz

    wie meinen?
    🙂



  • Das sieht mir nach einem ungültigen Speicherzugriff aus:

    hmmmm schrieb:

    float* f1 = (float*)(DWORD)0x244887E4;
    

    An dieser Stelle dürfte es einen Absturz geben:

    float f2 = *f1;
    

    Es wird versucht eine ungültige ( geschützte ) Speicheradresse zu dereferenzieren.

    Abhilfe:
    - keine konstanten Adressen wie 0x244887E4 etc. verwenden !



  • Ah okay, vielen Dank fürs erklären. 🙂


Anmelden zum Antworten