Memory Leak 잡는데 유용한 툴 개발

Visual Leak Detector 라는 것으로 GNU 라이센스 정책을 따르는 프로그램이다.
간단히 말해 무료로 사용 가능한 프로그램이다.
http://dmoulding.googlepages.com/vld

사용 방법
1. 실행 파일을 설치한다
2. VC++에 설치된 경로에 포함된 include폴더와 lib폴더를 각각 추가한다.
3. main()이 있는 곳에 #include "vld.h"를 추가한다. 만약 프리컴파일 헤더("stdafx.h")를 사용하는 경우 그 밑에 넣어준다. MFC의 경우는 App클래스가 존재하는 cpp 파일에 넣어주면된다.
4. 디버그(F5)

만약 안된다면....
프로그램 설치후 볼 수 있는 README.html 파일을 읽어 보는 것이 제일 좋다.
본인의 경우 .dll을 찾을 수 없다 거나 혹은 응용 프로그램을 초기화 할 수 없다고 나왔는데 간단하게 bin폴더에 있는 파일과 lib에 있는 파일 전부를 해당 프로젝트에 직접 넣어서 해결했다. 더 좋고 깔끔한 방법이 존재한다면 반드시 댓글을...

vld-1.9h-setup.exe

C++ delete를 사용했을 때 Error 개발

 CBuffer(size_t size)
  {
   m_pBuffer = new char(size);        // 이부분이 문제임
   m_pCurPos = m_pBuffer;
   m_pLastPos = m_pBuffer + size;
   ZeroMemory(m_pBuffer, size);
  }
  virtual ~CBuffer(void)
  {
   assert(m_pBuffer);
   m_pCurPos = NULL;
   m_pLastPos = NULL;
   m_nSize = 0;
   delete [] m_pBuffer;
  }


new 로 생성시 크기를 ()를 사용하면 안되고 []을 사용해야된다.
즉 다음과 같이 사용해야한다.
m_pBuffer = new char[size];      

이럴수가 또 다른 문제에 당면했다.  복사 생성자를 생각 안하면 delete시 에러가 난다.
좋다... 이것도 해결했다. 그런데....두둥 이번엔 new에서 뻑나네..아놔~~!


timeGetTime() link error 개발

windows.h 를 include를 했음에도 불구하고 링크가 난다면

#pragma commnet(lib, "winmm.lib")

를 추가해 주면 된다.

OLEDB Api 자료 개발


Memory leack Check 개발






_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
_CrtSetBreakAlloc( 819 );
메모리 릭이 발생 했을 때 해당 번호를 LeackNumber 위치에 적어 주면 된다.

1 2 3 4 5 6 7 8 9 10 다음