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
이렇게 하면.....
메세지가 이렇게 뜹니다.
댓글 영역