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
C Windows Mobile6.0 벨소리 변경 It Algorithm debugging Debug Linux ISDB-T English 티스토리 초대장 알고리즘 Wince5.0 출장 Error Case VC++ 미라지폰 퇴사 티스토리초대 개발자 C++ spam mail MP3 Brazil DVB-T DirectShow project 군대 1seg DVB english email Java 서태지 warning Dshow isdbt M480 음식 영어 이메일
 Calendar
«   2025/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