Parameter - Debugger zeigt <Schlechtes Ptr> - Absturz



  • Ich habs gefunden, glaube ich jedenfalls.

    in der Funktion

    fprint_long_canframe
    

    wird die Funktion

    sprint_long_canframe
    

    aufgerufen.
    Dort wird per sprintf_s auf buf geschrieben.

    sprintf_s(buf+offset, MAX_LONG_CANFRAME_SIZE," %02X", cf->DATA[i]);
    

    Der zweite Parameter von sprintf_s gibt je die größe von Parameter 1 an.

    Bei mir wird jedoch die Startadresse von buf um Offset verschoben, aber die maximale größe blieb gleich. Anscheinend prüft sprintf_s die größe ab der Startadresse.

    Hab die Zeile jetzt wie folgt geändert und es funktioniert

    sprintf_s(buf+offset, MAX_LONG_CANFRAME_SIZE-offset," %02X", cf->DATA[i]);
    

    Kann jemand meine Vermutung bestätigen, oder ist das blödsinn?

    Eine weitere Frage. Wird die Heapgröße beim Anlegen eines Projektes auf einen Standardwert geseetzt? Ich habe unter Projekteigenschaften->Linker->System nachgesehen und da waren folgende Einträge:

    Heapreservierungsgröße: 0
    Heapcommitgröße: 0
    Stapelreservierungsgröße: 0
    Stapelcommitgröße: 0

    Wird ein Standardwert benutzt, so lange dort 0 eingetragen ist, oder muss dort die Speichergröße in Byter eingetragen werden?



  • Das sieht besser aus.
    Auch wird der eap mit einem Default-Wert initialisiert und kann auch dynamisch wachsen...


Anmelden zum Antworten