프로그래밍 팁

typeid memory leak 메모리 릭

바보 악마 2010. 9. 17. 11:26

RTTI를 직접 구현하기 싫어서 typeid를 사용하다가 프로젝트 설정을 이것저것 바꾸다보니


어느순간 leak이 발생했다 열심히 디버깅을 해보다보니


typeid 의 name 함수가 문제인것 같다는 생각에 찾아보니...


RTTI를 직접 구현해야하나...



원문 : http://support.microsoft.com/kb/140670

현상
Visual C++ 런타임 형식 정보를 (RTTI) 및 type_info 클래스 'name' 멤버 함수를 호출하여 디버그 응용 프로그램을 끝낼...

Visual C++ 런타임 형식 정보를 (RTTI) 및 type_info 클래스 'name' 멤버 함수를 호출하여 디버그 응용 프로그램을 끝낼 때 보고하는 "출력 창에 메모리 누수 감지!".

원인
type_info 클래스 'name' 멤버 함수를 호출할 때 잘못 형식 이름을 보유할 _NORMAL_BLOCK 버퍼를 할당합니다. 프로그램의 디...

type_info 클래스 'name' 멤버 함수를 호출할 때 잘못 형식 이름을 보유할 _NORMAL_BLOCK 버퍼를 할당합니다. 프로그램의 디버그 버전을 실행할 때 잘못 보고할 수 있는 메모리 누수가 발생할 수 있습니다.

해결 방법
보고된 메모리 누수가 무시할 수 있습니다.

보고된 메모리 누수가 무시할 수 있습니다.

현재 상태
Microsoft는 이 문서의 시작 부분에 나열한 제품에서 버그가 수 있도록 이 확인했습니다. 이 문제는 32비트 버전의 Visual C++ 버...

Microsoft는 이 문서의 시작 부분에 나열한 제품에서 버그가 수 있도록 이 확인했습니다. 이 문제는 32비트 버전의 Visual C++ 버전 4.2 수정되었습니다.

추가 정보
메모리 누수가 있는 type_info 'name' 멤버 함수를 호출하고 _CrtDumpMemoryLeaks 나중에 호출할 때 잘못 보고됩니다....

메모리 누수가 있는 type_info 'name' 멤버 함수를 호출하고 _CrtDumpMemoryLeaks 나중에 호출할 때 잘못 보고됩니다. 다음 예제 코드는 문제를 보여 줍니다.

예제 코드

/* Compile options needed: /D_DEBUG
*/ 
#include <typeinfo.h>
#include <iostream.h>
#include <crtdbg.h>
struct test {};
void main()
{
    test t;
    typeid(t).name();
    _CrtDumpMemoryLeaks();
}
				
출력 창의 디버그 탭 다음과 유사한 메시지를 볼 수 있습니다.
   Loaded symbols for 'E:\WINNT35\system32\MSVCR40D.DLL'
   Detected memory leaks!
   Dumping objects ->
   {44} normal block at 0x002D2390, 12 bytes long.
   Data: <struct test > 73 74 72 75 63 74 20 74 65 73 74 00
   Object dump complete.
   The program 'E:\temp\Text1.exe' has exited with code 1 (0x1).
					
참고: MFC 응용 프로그램 내에서 'name' 멤버 함수를 사용하는 경우 _CrtDumpMemoryLeaks 명시적으로 호출하는 경우에도 해당 누수 보고됩니다. MFC 응용 프로그램이 종료될 때 자동으로 이 함수를 호출합니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.1 Subscription

'프로그래밍 팁' 카테고리의 다른 글

cegui 설치 빌드  (0) 2010.12.02
C#에서 HINSTANCE 얻기  (0) 2010.11.04
kgc 2010  (0) 2010.09.16
std::string 대소문자 바꾸기  (0) 2010.09.10
dir 구현 fileSerch  (0) 2010.09.10