Hallo, Folgender Bug / folgendes Problem: Im Kopf des Codes definiere ich eine boolean Variable; Dies sollte logischerweise HIGH/LOW, TRUE/FALSE, 1/0 sein. Dies funktioniert soweit gut, wenn ich die Variable gezielt toggle. Bei einer for-Schleife, die absolut nichts mit dieser Variable macht, wird die boolean Variable beim letzten Durchlauf der for-schleife auf 211 gesetzt. Wie kann das sein und wieso?! Theoretisch doch gar nicht möglich? Ich weiss, dass eine boolean Variable 1 Byte beansprucht, nach mir sollte die aber trotzdem nicht so gesetzt werden können... Anyway, hier noch der Code in dem das Mysteriöse geschieht: for(i=0;i<sizeof(sequence2x)/4;i++){ xdiffs2[i] = sequence2x[i+1] - sequence2x[i]; ydiffs2[i] = sequence2y[i] - sequence2y[i+1]; Serial.println(dir); } "dir" ist meine boolean Variable. Die Arrays haben jeweils 11 Werte a 4 Byte (long) Jemand schonmal solche Probleme gehabt?
Thomas schrieb: > Jemand schonmal solche Probleme gehabt? Ja, wenn ein amoklaufender Pointer/Index eines Arrays, das im Speicher davor liegt, Werte überschrieben hat. Zeig doch mal das gesamte Programm...
:
Bearbeitet durch Moderator
Das Problem liegt ausserhalb des gezeigten Codes. Wie sind definiert: xdiffs2, sequence2x, ydiffs2, i Gruß, Stefan
> [..] beim letzten Durchlauf der for-schleife auf 211 gesetzt. Wie kann > das sein und wieso?! Theoretisch doch gar nicht möglich? Du schreibst höchstwahrscheinlich über das Ende von xdiffs2 oder ydiffs2 raus. > Die Arrays haben jeweils 11 Werte a 4 Byte (long) Ich vermute Du beziehst Dich damit auf xdiffs2 und ydiffs2. Was genau ist sequence2x?
g457 schrieb: > Du schreibst höchstwahrscheinlich über das Ende von xdiffs2 oder ydiffs2 > raus. Ayy, da hab ich doch glatt die Grösse von xdiffs2 & ydiffs2 auf "[10]" gehabt, danke, fixed! g457 schrieb: > Was genau > ist sequence2x? [11] Stefan K. schrieb: > Wie sind definiert: > xdiffs2, sequence2x, ydiffs2, i float xdiffs2[11] = {}; float ydiffs2[11] = {}; unsigned long sequence2x[11] = {0,2000000,....meine Werte}; unsigned long i = 0;
Lothar M. schrieb: > Zeig doch mal das gesamte Programm... Nee ich kopier hier keine 2371 Zeilen rein
Bei i = 11 liefert diese Zeile kein definiertes Ergebnis mehr: ydiffs2[i] = sequence2y[i] - sequence2y[i+1]; Gruß, Stefan
Thomas schrieb: > Nee ich kopier hier keine 2371 Zeilen rein Du kannst einfach diese Datei anhängen, wie sie ist...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.