seltsames Verhalten im Speicher

Gast #237467
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.