Problem mit String

Hallo,
ich habe ein seltsames Verhalten bei Verwendung mit String. Ich habe folgende Funktion definiert

String Decode(const String &text){
String strRet;
...
Serial.println(strRet);
return strRet;
}

habe nun zwei weitere Funktion ein Art "UnitTests" - Funktion

void Test(const String &text, const String &pattern)
{
String strDecode;
strDecode = Decode(text);
if (strDecode.equals(pattern)) { Serial.println("OK"} else { Serial.println("not OK");
}

void UnitTests()
{
Test("SOS", "---"); //1. Fall
//Test("ABCED", "... "); //2. Fall
}

void loop()
{
UnitTests();
}

Wenn ich Fall 1 durchführe funktioniert alles, wie man es vermutet. Auch wenn ich Test("SOS" auskommentier und dann Test("ABCDE aufrufe, dann geht dies auch.
Nur wenn ich beide Funktionen zusammen aufrufe, dann scheitert plötzlich Test("ABCD.
Ich habe einmal strDecode aus Test ausgegeben, da steht nichts drin.
Kann sich jemand dieses erklären?

Kann sich jemand dieses erklären?

Ich habe aufgegeben, rauszukriegen wie lange String Objekte funktionieren.
Innerhalb von loop() jedenfalls kannst du sie vergessen.

Und nur zu beweisen, dass man ein Dutzend String-Objekte in setup() erzeugen und damit einen Test bis zum nächsten Reset fahren kann, bringt (mir) nichts.