Variable (int) nimmt unmöglichen Wert an

OP #3538110
Lesenswert?
• ▲
▼
Hallo und guten Tag,

ich programmiere zur Zeit die Firmware (Programmiersprache C) eines 
Mikrocontrollers (LPC2148) und habe ein Problem, bei dem ich mir selber 
nicht mehr weiterhelfen kann.

Und zwar habe ich eine Variable (int) die ich mit jedem "Durchgang" um 
eins erhöhe.. also ganz trivial:

int counter;

while(counter < 100)
{
   // Andere Funktionen und Anweisungen
   // ...

   counter++;

   // Ausgabe der Variable counter in ein Logfile
}

Nun passiert es jedoch, dass, wenn ich mir die Werte in ein Logfile 
ausgeben lasse die Variable counter ab und zu folgende Werte annimmt:

40
41
42
43
741749554
-> hier bricht das Programm ab, da 741749554 größer als 100 ist


Kann mir jemand einen Tipp geben, wie so etwas möglich ist?? Woher kommt 
diese abnormal hohe Zahl (die im übrigen immer so im 700 Mio.-Bereich 
ist.
Wie kann ich das eventuell vorbeugen?

Über Ratschläge würde ich mich freuen!

VG
Gast #3538126
Lesenswert?
• ▲
▼
>>> Kann der Fehler auch dort liegen, obwohl ich die Variable counter
>>> sonst irgends "anfasse" also auslese oder verändere?

Ja. Genau darum geht es...
>>>>   // Andere Funktionen und Anweisungen
>>>>   // ...
Entferne den Kram dazwischen und das Problem verschwindet auch.....

Gruß T.
#3538127
Lesenswert?
• ▲
▼
Henning Vogel schrieb:

> Kann der Fehler auch dort liegen, obwohl ich die Variable counter sonst
> nirgends "anfasse" also auslese oder verändere?

Du musst nicht explizit auf die Variable zugegriffen haben. Es reicht 
völlig, wenn du an irgend einer anderen Stelle im Programm den 
Speicherbereich (in dem die Variable liegt) niedergebügelt hast. 
Arrayzugriffe sind beispielsweise dafür ein heißer Kandidat:
1
int i;
2
int a[3];
3
int j;
4

5

6
  i = 5;
7
  j = 5;
8
  a[3] = 8;

die Chancen stehen gut, dass durch das Beschreiben von a[3] (welches 
nicht existiert), entweder i oder j seinen Wert ändert.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.