IT 취미생활.  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
[Win32]동적 할당 후 delete하지 않은 메모리 할당 위치 알아내기
정확하게 출처가 어디인지는 모르겠지만 ;;;
도움이 되었으면 합니다.

동적으로 생성하고 delete을 안한경우 비주얼C++에서 알아내는 방법입니다..
VC++에서만 됩니다.
일단 밑의 코드를 컴파일 해보시고, F5(디버그 실행) 키를 누르면 컴파일러 출력창에
몇바이트의 메모리가 해제를 안했는지 알려줍니다.

#ifdef _DEBUG
   #define new new(_CLIENT_BLOCK, __FILE__, __LINE__)
#endif
디버그 모드에서만 작동됩니다..

void StartDebug()
{
  _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);
}
그리고 이거는 맨처음 해주어야 합니다.. 자세히는 모르겠고, 걍 저렇게 ^^;;


코드:
#include <stdio.h>
#include <string.h>
#include <crtdbg.h>
// 디버그용 new
#ifdef _DEBUG   
 #define new new(_CLIENT_BLOCK, __FILE__, __LINE__)
#endif
 void StartDebug()
 { 
  _CrtSetDbgFlag( _CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF );
 }

int main()
{  
 StartDebug();  
 
 char* s1;   
 char* s2;  
 s1 = new char[128];  
 strcpy(s1, "string1");  
 s2 = new char[256];  
 strcpy(s2, "string2");     
 
 delete[] s1;     
 return 0;
}
 


디버그 상태로 실행하고 실행파일이 종료되면.. 밑에쪽 VC++ 컴파일러 메세지창에
이런식으로. 나옵니다.. (VC++6에선 다 영어로 나옴)
----------------------------------------------------------------------------
'debug.exe': 'C:\temp\debug\Debug\debug.exe' 로드, 기호가 로드되었습니다.
'debug.exe': 'D:\WINXP\system32\ntdll.dll' 로드, 기호가 로드되지 않았습니다.
'debug.exe': 'D:\WINXP\system32\kernel32.dll' 로드, 기호가 로드되지 않았습니다.
Detected memory leaks!
Dumping objects ->
c:\temp\debug\main.cpp(25) : {44} client block at 0x003710B0, subtype 0, 256 bytes long.
Data: <string2         > 73 74 72 69 6E 67 32 00 CD CD CD CD CD CD CD CD
Object dump complete.
'[3340] debug.exe: 기본' 프로그램이 0 (0x0) 코드에서 끝났습니다.
----------------------------------------------------------------------------
위에 내용에서..

c:\temp\debug\main.cpp(25) : {44} client block at 0x003710B0, subtype 0, 256 bytes long.
Data: <string2         > 73 74 72 69 6E 67 32 00 CD CD CD CD CD CD CD CD

main.cpp의 25번째 줄에서 new한 256바이트가  해제 안했다고 그러네여
delete 잘 까먹고 안하는 분들은 필수!! ^^;;


------------------------------------

가장 간단한 방법이군요.


BLOG main image
취미생활
 Notice
 Category
분류 전체보기 (191)
매일매일갱생 (83)
서버개발 (1)
임베디드개발 (12)
Programming (80)
Personal Projects (6)
유용한 프로그램 (0)
 TAGS
project spam mail debugging It 퇴사 DVB-T 티스토리 초대장 isdbt C++ 알고리즘 warning Error Case 군대 Windows Mobile6.0 ISDB-T Wince5.0 Brazil 영어 이메일 M480 Dshow DirectShow VC++ 미라지폰 Java 티스토리초대 Linux MP3 Debug English Algorithm 개발자 출장 C 음식 서태지 벨소리 변경 1seg DVB english email
 Calendar
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
 Recent Entries
 Recent Comments
 Recent Trackbacks
 Archive
 Link Site
zextor
괴짜 프로그래머의 일상사~@@
Gag & Peace, and more..
Kazakhstan Almaty.......
Min-A
Sadgarret
Steve Yoon's log
가슴 뛰는 삶을 살아라
오스틴 파워
GUI sin
melanie parker_Lady
제레미의 TV 2.0 이야기..
 Visitor Statistics
Total :
Today :
Yesterday :
rss