Arrays als lokale Variable verwenden

O

omignobi

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich arbeite mit der WinCC Version 5.1 .
Ich habe in meinem WinCC Programm als C Code die folgenden Felder als lokale Variablen angelegt:
WORD feld1[15][531]
WORD feld2[126]
WORD feld3[126]
WORD feld4[126]
WORD feld5[126]
WORD feld6[126]

Dynamisch werden nun Variablen von einem DB aus einer S7 400er CPU gelesen und in den oben angelegten Feldern gespeichert. Dazu habe ich die einzelnen Felder in Funktionen z. B. als extern feld1[15][531] aufgerufen, um sie dann mit Variablen beschreiben zu können. Über printf habe ich mir dann den Inhalt der Felder angezeigt und überprüft. Der Inhalt war auch der richtige. Mein Problem tritt auf wenn ich die Runtime schließe und danach wieder starte. Dann stürzt das Programm ab. Ich denke das könnte an einem Speicherproblem liegen da ich lokale Felder verwendet habe. Muss ich eigentlich für diese Felder irgendeine "malloc" Funktion aufrufen um Speicher freizugeben. Da habe ich leidr keine Ahnung von. Oder gibt es noch eine andere Lösung. Freue mich über jede Antwort.
 
Das Porblem liegt bei der Deklaration.

WORD Var[3] beinhaltet:

Var[0]
Var[1]
Var[2]

(Der Index startet bei 0)

In deinem Fall musst du 532 Felder deklarieren, sonst schreibst du irgendwo in den Speicher.

WORD feld1[15][532]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kleiner Fehler Große Wirkung

Habe genau den Fehler gemacht. Habe die Felder um eine Nummer zu klein gemacht. Jetzt läuft das Programm ohne jeden Absturz
Danke Nochmal
 
Noch eine kleine Anmerkung:

Natürlich müssen beide Dimensionen gross genug deklariert werden.
WORD feld1[16][532]
 
Zurück
Oben