Antwort auf: Tag11 automatisch

Foren User Projekte Tag11 automatisch Antwort auf: Tag11 automatisch

#812
Raabinator
Mitglied

Hallo Klaus.

Aus deiner Funktion espConnectionIP gibst du einen Zeiger auf ein char-Array zurück, das nur in dieser Funktion gültig ist.
Dieses Array wird beim Aufruf der Funktion auf dem Stack angelegt. Wird die Funktion verlassen, wird dieser Speicher wieder für die Benutzung freigegeben. D.h. die Daten werden durch Daten der nächsten Funktion überschrieben. Das kann funktionieren, ist aber sehr unwahrscheinlich und unsicher.
Da gibt es zwei Möglichkeiten:

  • deklariere tmp1 als static (static char tmp1[100];). Damit wird tmp1 global angelegt und nicht mehr überschrieben, ist aber weiterhin nur in dieser Funktion sichtbar. Der Inhalt bleibt zwischen den Funktionsaufrufen erhalten.
  • definiere tmp1 global (vor allen Funktionen). tmp1 ist dann für alle Funktionen sichtbar, ausser für loop(), denn da gibt es nochmal ein lokales tmp1.
  • Diese Antwort wurde geändert vor 8 Jahren, 6 Monaten von Raabinator.