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: 0Wird 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...