secondo me erri...
è vero che l'array stringa è statico, ma non essendo globale esiste in memoria soltanto durante il suo scope, cioè l'esecuzione della funzione ! quando la funzione ritorna se ne perde traccia e la memoria viene liberata (senza bisogno del free che in questo caso crea casini). Altrimenti ci sarebbero parecchi problemi, primo tra tutti il fatto che se chiamo la stessa funzione 1000 volte ci sarebbero qualcosa come 200kb di memoria persa nel nulla, cosa che un compilatore ottimizzante non permette di certo!
Le variabili locali (dichiarate all'inizio del corpo della funzione) vengono allocate nello stack al momento della chiamata a funzione. Se la funzione non viene chiamata mai, non ci sarà mai nessun array stringa in memoria!