Se si dispone di una variabile con durata statica, viene creata quando l'applicazione viene inizializzata. Quando l'applicazione termina, l'oggetto viene distrutto. Non è possibile controllare l'ordine in cui vengono creati diversi oggetti.
La modifica creerà l'oggetto da creare quando viene utilizzato per la prima volta e (poiché viene assegnato dinamicamente) non verrà mai distrutto.
Questa può essere una buona cosa se altri oggetti hanno bisogno di questi oggetti quando vengono distrutti.
Aggiornamento
Il codice originale accedere l'oggetto utilizzando la variabile Data
. Il nuovo codice non deve essere modificato in alcun modo. Quando il codice utilizza Data
, infatti, utilizzerà la macro Data
, che verrà espansa in getData()
. Questa funzione restituirà un riferimento all'effettivo (oggetto assegnato dinamicamente). In pratica, il nuovo codice funzionerà come una sostituzione drop-in per il vecchio codice, con l'unica differenza evidente che è quella che ho descritto nella risposta originale sopra.
forse per evitare una sorta di inizializzazione statico problema? – Anycorn
'#define dati ...' sta solo cercando problemi – tenfour
@ Lol4t0: potresti spiegare un po 'di più riguardo il tuo commento? Come non è thread sicuro? – Lazer