2010-01-21 2 views
5

C++에서 typeid 연산자를 사용하여 다형성 클래스의 이름을 검색 할 수 있습니다.typeinfo :: name()을 가리키는 메모리의 수명은 얼마입니까?

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

반환 된 const char* 포인터가 가리키는 문자열의 길이를 내 프로그램에서 사용할 수 있습니까?

+2

실행 가능 이미지에 링크되어 있습니다. .map 파일을보십시오. –

답변

15

rtti가있는 클래스가 존재하는 한. 그래서 당신이 하나의 실행 파일을 다루는다면 - 영원히. Dynamic Link Librariy의 클래스의 경우 약간 옮깁니다. 잠재적으로 언로드 할 수 있습니다.

+1

+1 가장 정확한 답변, 첫 번째 문장을 고쳐야하지만, 당신이 말하고자하는 바를 알고 있지만 그냥 횡설수설 한 것처럼 보입니다. –

3

type_info::name()이 반환 한 메모리는 응용 프로그램의 수명 기간 동안 사용할 수 있습니다.

+0

표준에 의해 보장 되나요? 나는'typeid()'의 결과가 응용 프로그램 수명을 가지고 있지만'type_info :: name()'의 결과에 평생을 두는 어떤 것도 찾을 수 없다는 것을 알고 있습니다. –

+0

TTBOMK, Dewfy에서 제공하는주의 사항이 있습니다. 그러나 표준은 동적 라이브러리의 존재를 인정하지 않기 때문에 ... – sbi