Chiarezza su memoria dinamica e Serial.print non funzionante

Ciao a tutti, volevo aprire una discussione in merito ad un fatto che mi è accaduto, mentre stavo provando uno sketch ed eseguendo dei Serial.print per fare una sorta di debug mi sono accorto che alcuni non andavano a buon fine, dopo aver cristonato un po' ho dedotto che la causa fosse la memoria dinamica che quando veniva occupata più del 57% arduino leonardo non eseguiva questi comandi. E possibile risolvere in qualche modo questo problema, spostando le variabili, in questo caso String da qualche altra parte, usare la flash ad esempio con printf, avete qualche idea??

Vi inserisco lo sketch(è insignificante, l'originale sarebbe stato un po' lunghino, ma anche questo da il problema che dicevo)

typedef struct vociMenu
{
  String numero[20];
} t_vociMenu;
t_vociMenu nomeS1[10];

String nome[10];
String arra[10];
int stepMenu = 0;
int x = 4;
int y = 2;

void setup() {
  Serial.begin(9600);
  delay(5000);
  Serial.println("connecting........");

  nome[4] = "stampa nome";
}     
void loop() {
  delay(2000);
  Serial.println("linea debug");
  if(stepMenu == 0) {
    delay[1000];
    Serial.println(nome[x]);
    delay[1000];
    Serial.println(arra[x]);
    delay[1000];
  }else if(stepMenu == 1) {
    //Serial.println(nomeS1[x].numero[y]);
  }
}
Opzioni di compilazione cambiate, ricompilo tutto
Lo sketch usa 5528 byte (19%) dello spazio disponibile per i programmi. Il massimo è 28672 byte.
Le variabili globali usano 1524 byte (59%) di memoria dinamica, lasciando altri 1036 byte liberi per le variabili locali. Il massimo è 2560 byte.

risultato del monitor seriale, come si può notare salta [u]Serial.println(nome[X]);[/u] e [u]Serial.println(arra[X]);[/u]

connecting........
linea debug


linea debug


linea debug


linea debug


linea debug


linea debug


.............................