2010-01-21 8 views
5

In C++ posso utilizzare typeid all'operatore di recuperare il nome di una classe polimorfica:Qual è la durata della memoria puntata a typeinfo :: name()?

const char* name = typeid(CMyClass).name(); 

Quanto durerà la stringa puntata dal const char* puntatore restituito a disposizione il mio programma?

+2

È collegato all'immagine eseguibile. Guarda il file .map. –

risposta

15

Finché esiste la classe con rtti. Quindi se gestisci un singolo eseguibile, per sempre. Ma per le classi in una libreria di collegamento dinamico si sposta leggermente. Potenzialmente puoi scaricarlo.

+1

+1 Risposta più precisa, anche se è necessario correggere quella prima frase, so cosa stai cercando di dire, ma sembra proprio senza senso –

3

La memoria restituita da type_info::name() sarà disponibile per la vita dell'applicazione.

+0

Questo è garantito dallo standard? So che il risultato di 'typeid()' ha una durata dell'applicazione, ma non riesco a trovare nulla che collochi una vita sul risultato di 'type_info :: name()'. –

+0

TTBOMK, è con l'avvertenza data da Dewfy. Tuttavia, poiché lo standard non riconosce nemmeno l'esistenza di librerie dinamiche ... – sbi

Problemi correlati