Si tiene una variable con duración estática, se crea cuando la aplicación se inicializa. Cuando la aplicación finaliza, el objeto se destruye. No es posible controlar el orden en que se crean los diferentes objetos.
El cambio hará que el objeto se cree cuando se usa por primera vez, y (como se asigna dinámicamente) nunca se destruirá.
Esto puede ser algo bueno si otros objetos necesitan este objeto cuando se destruyen.
actualización
El código original accede al objeto utilizando la variable Data
. El nuevo código no tiene que ser modificado de ninguna manera. Cuando el código use Data
, de hecho, utilizará la macro Data
, que se ampliará a getData()
. Esta función devolverá una referencia al objeto real (objeto dinámicamente asignado). En la práctica, el nuevo código funcionará como un reemplazo directo para el código anterior, con la única diferencia notoria que es lo que describí en la respuesta original anterior.
tal vez para evitar algún tipo de inicialización estática ¿problema? – Anycorn
'#define Data ...' solo está pidiendo problemas – tenfour
@ Lol4t0: ¿podría explicar un poco más acerca de su comentario? ¿Cómo no es seguro para subprocesos? – Lazer