Forum: Mikrocontroller und Digitale Elektronik Weg-kommentierte Variablen verändern den Programmablauf


von Torsten B. (torty)


Angehängte Dateien:

Lesenswert?

Hallo Gruppe

Habe folgendes Problem mit dem Angehängten Programm, das im AVR Studio 
4.18 Build 716 compiliert wird.

In Zeile 79 steht folgendes geschrieben:
"char uart_string_copy[UART_MAXSTRLEN + 1];"

Das ist eine Stringvariable, die ich zwischenzeitlich mal gebraucht
habe, aber in dieser Version nur noch Speicher belegt, weil nicht mehr
benötigt.

Dieser String wird nicht benötigt !!
Solange ich ihn mitcompiliere läuft das Programm einwandfrei.

Wenn ich diese Zeile nun aber mit "//" stilllege, kommt zwar beim
kompilieren keine Meldung (auch kein Warning), aber dafür erscheint auf
meinem LCD Display nur noch Müll. Das Programm läuft nicht mehr richtig.

?!?!?!?

Wenn ich die "//" wieder lösche und ich den Compiler die Zeile wieder
verarbeiten lasse, geht wieder alles super.

Kann mir das jemand erklären ?

Danke
Torsten

von holger (Gast)


Lesenswert?

>In Zeile 79 steht folgendes geschrieben:
>"char uart_string_copy[UART_MAXSTRLEN + 1];"

Ist global und wird mit 0 initialisiert.

>Wenn ich diese Zeile nun aber mit "//" stilllege, kommt zwar beim
>kompilieren keine Meldung (auch kein Warning), aber dafür erscheint auf
>meinem LCD Display nur noch Müll. Das Programm läuft nicht mehr richtig.

>Wenn ich die "//" wieder lösche und ich den Compiler die Zeile wieder
>verarbeiten lasse, geht wieder alles super.

>Kann mir das jemand erklären ?

Das unbenutzte Array diente wohl als Bremse für einen
wildgewordenen Pointer der im Speicher keine 0 gefunden hat
und dann immer weiter durch den Wald geht;)

von Anja (Gast)


Lesenswert?

for (unsigned char j = 0; j <= SatzNr;

Du Versuchst 1 Array mehr zu füllen als du Deklariert hast
(0.. SatzNr-1)

Gruß Anja

von ... (Gast)


Lesenswert?


Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.