상세 컨텐츠

본문 제목

디버깅 - 메모리누수체크(아직 해보진 않음....)

청강컴정/MFC

by luckey 2009. 6. 26. 22:38

본문

mfc 메모리에 관한 클레스를 이용하는 방법입니다.
메모리의 할당 상태를 보고 코드상에서 테스트할수 있습니다.
다음과 같이요....

#ifdef _DEBUG
CMemoryState oldm;
CMemoryState newm;
CMemoryState diff;

oldm.Checkpoint();
#endif


....
the code to be tested...
....



#ifdef _DEBUG
newm.Checkpoint();
if( diff.Difference(oldm,newm) )
{
TRACE("메모리 누수nn");
diff.DumpStatistics();
}
#endif

==>메세지.....

0 bytes in 0 Free Blocks.
48 bytes in 1 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 48 bytes.
Total allocations: 48 bytes.
메모리 누수

0 bytes in 0 Free Blocks.
48 bytes in 1 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 48 bytes.
Total allocations: 48 bytes.
메모리 누수

0 bytes in 0 Free Blocks.
48 bytes in 1 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 48 bytes.
Total allocations: 48 bytes.
메모리 누수

0 bytes in 0 Free Blocks.
48 bytes in 1 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 48 bytes.
Total allocations: 48 bytes.
메모리 누수

---------------------------------
다른방법

#ifdef _DEBUG
CMemoryState oldm;
CMemoryState newm;
CMemoryState diff;

oldm.Checkpoint();
#endif

// CString* str = new CString("sssss");
int* i = new int[2];
i[0] = 0x1234;
i[1] = 0x012345678;


#ifdef _DEBUG
newm.Checkpoint();
if( diff.Difference(oldm,newm) )
{
TRACE("메모리 누수nn");
diff.DumpStatistics();
}
#endif
이렇게 하면.....
메세지가 이렇게 뜹니다.

관련글 더보기

댓글 영역