Originariamente inviato da denis76
Se io invoco n volte quella funzione "riga" sarà sempre allocata nello stesso posto oppure sarà allocata in punti diversi della memoria con spreco di ram?
Viene allocata 1 volta sola all'inizio del programma e ad 1 indirizzo che rimane fisso per tutta la durata del programma. Però quella variabile è visibile solo all'interno della funzione.

Il problema dell'utilizzo di una variabile static in quel modo è che la funzione non può essere usata in maniera "concorrente". Non deve essere chiamata contemporaneamente da più thread, non è "rientrante" e il valore ritornato deve essere usato "subito".

Mi spiego meglio:
codice:
char *a, *b;

a = ToString ();
b = ToString ();
In questo caso, a e b puntano (ovviamente) alla stessa locazione, ma il contenuto è solo quello impostato dall'ultima chiamata (dipende ovviamente da cosa ci scrive la funzione!).

Se usare o meno una variabile static in quel modo, dipende da te e da cosa devi fare.