Forum: Compiler & IDEs seltsames Verhalten im Speicher


von see4far (Gast)


Lesenswert?

Hallo!

Bin vorhin auf ein sehr merkwürdiges Verhalten gestoßen.

In meiner CRC16-Funktion wollte ich

uIndex = uchCRCHi ^ *puchMsg++;

in eine andere Funktion auslagern:

unsigned calcIndex(unsigned char uchCRCHi, unsigned char Val) {
return (uchCRCHi ^ Val); }

Danach erfolgt dann der Aufruf über:

uIndex = calcIndex(uchCRCHi, *puchMsg++);

Jetzt hab ich folgendes Problem:
6mal kann ich den CRC-Wert richtig berechnen, beim 7. mal auch, aber
dabei werden dann scheinbar andere Speicherbereiche überschrieben.
Zumindest sind meine Datenpakete dann mit falschen Zeichen befüllt, die
Checksumme hintendran stimmt immernoch. Bei diesen Zeichen taucht dann
unter anderem auch die Checksumme wieder auf, aber in umgekehrter
Reihenfolge, erst LowByte, dann HighByte. Die anderen Zeichen kehren
auch immer wieder, aber sie wandern im Datenpaket aufwärts.

Ich finde das sehr seltsam. Eigentlich wollte ich größere Teile von der
CRC-Berechnung auslagern, dabei entdeckte ich dann das Problem. Ich muss
halt den CRC von einem Array und ein paar anderen Variablen zusammen
berechnen ... und da wollte ich eine Art CRCAddValue-Funktion
auslagern...

Kann mir einer sagen, wo ich da ansetzen muss. Bin relativ ratlos!!!

Gruß,
see4far

von Rolf Magnus (Gast)


Lesenswert?

Kingt ein Bisschen, als sei dein Stack voll. Wäre das möglich?

von see4far (Gast)


Lesenswert?

könnte sein! wie stell ich das fest? und wie behebe ich das?

mfg
see4far

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.