Какое время жизни памяти указано для typeinfo::name()?

В C++ я могу использовать оператор typeid для получения имени любого полиморфного класса:

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

Как долго строка, на которую указывает возвращенный указатель const char*, будет доступна моей программе?


person sharptooth    schedule 21.01.2010    source источник
comment
Он связан с исполняемым образом. Посмотрите на файл .map.   -  person Hans Passant    schedule 21.01.2010


Ответы (2)


Пока существует класс с rtti. Так что если иметь дело с одним экзешником - навсегда. Но для классов в Dynamic Link Librariy это немного меняется. Потенциально вы можете разгрузить его.

person Dewfy    schedule 21.01.2010
comment
+1 Самый точный ответ, хотя вам нужно исправить первое предложение, я знаю, что вы пытаетесь сказать, но это просто похоже на тарабарщину. - person Grant Peters; 21.01.2010

Память, возвращаемая type_info::name(), будет доступна в течение всего времени существования приложения.

person sbi    schedule 21.01.2010
comment
Это гарантируется Стандартом? Я знаю, что результат typeid() имеет время жизни приложения, но я не могу найти ничего, что указывало бы на время жизни результата type_info::name(). - person D.Shawley; 21.01.2010
comment
TTBOMK, это с оговоркой, данной Dewfy. Однако, поскольку стандарт даже не признает существование динамических библиотек... - person sbi; 21.01.2010