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.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?
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:
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!).codice:char *a, *b; a = ToString (); b = ToString ();
Se usare o meno una variabile static in quel modo, dipende da te e da cosa devi fare.