Microsoft는 디버그 빌드에서 누출 검사 장치를 사용할 때 수십 년 된 버그가 있습니다. 누수는 typeinfo.name()
과 같은 C++ 유형 정보를 사용할 때 런타임 라이브러리에 의해 할당 된 것으로보고됩니다. Microsoft Connect의 Memory leaks reported by debug CRT inside typeinfo.name()도 참조하십시오.Microsoft typeinfo.name() 메모리 누수를 수정하는 방법은 무엇입니까?
거의 동일한 시간 동안 누출로 인해 오류 보고서와 사용자 목록 토론이 진행되었습니다. Microsoft 버그는 또한 사용자 프로그램의 실제 누수를 숨길 수 있습니다. 후자의 점은 마스킹 때문에 실제 문제를 돌봐 줄 수 없기 때문에 특히 걱정 스럽습니다.
typeid(T)
및 typeinfo.name()
의 사용으로 인해 누출을 스쿼시하려고합니다. 내 질문은 Microsoft의 버그를 어떻게 해결할 수 있을까요? 사용할 수있는 해결 방법이 있습니까?
는 사용하지 마십시오 "파일 typeid_name_workaround.hpp"
다른
.cpp/.hpp
파일'typeinfo.name (:그래서 그 대신
typeid(<typename>)
사용하여, 당신은 같은 것을 사용)'? – Yakk샘 감사합니다. [소스 코드 라이센스] (http://www.google.com/search?q=license+microsoft+c%2B%2B+runtime+source+code)에 대한 정보를 찾을 수 없습니다. 링크가 있습니까? 또한이 경우 픽스는 어떻게 작동합니까? 모든 사용자가 라이선스를 취득 할 예정입니까? 아니면'.local' DLL 리다이렉션과 함께 사이드 바이 사이드 (side-by-side) 링크로 라이센스를주고 배포합니까? 후자는 실행 가능한 옵션처럼 보이지 않지만 프로세스를 이해할 수 있도록하고 싶습니다. – jww
제안 : 당신이'typeinfo.name()'을 사용하고있는 모든 장소를 다시 방문하고 어떤 Meyer의 싱글 톤 함수 또는 템플릿이나 뭔가를 호출하도록 바꾸십시오 - 적어도 최소한 '누출'이있을 것입니다. 정적 변수. –