使用 CMemoryState 函数(MFC)
在你所检测的程序段的开始和结尾处各建立一个CmemoryState对象,调用其成员函数Checkpoint,以取得当时内存使用情况的快照,然后对比前后两次快照,如果不相同则说明可能存在内存泄露的情况。
举例:
- #ifdef _DEBUG
- CMemoryState memStateOld, memStateNew, memStateDiff;
- memStateOld.Checkpoint();
- TRACE("Memory Snapshot1.\n");
- #endif
- const int size = 10240;
- // 分配内存
- char* buf = new char[size];
- memset(buf, 1, size);
- // 释放内存
- //delete[] buf;
- #ifdef _DEBUG
- memStateNew.Checkpoint();
- TRACE("Memory Snapshot2.\n");
- if(memStateDiff.Difference(memStateOld, memStateNew))
- {
- TRACE("Memory leaked!\n");
- }
- #endif