确切的说,在C++中对内存的管理是挺复杂的,申请内存的同时也必须记得释放内存,new匹配delete, new[]匹配delete[].还有更困难的是 在涉及到组模(Module),这点暂不讨论,等我搞清楚后会和大家分享。现在先说一下CMemoryState,如有什么不足之处,或者是错误的地方, 请各位看官不吝赐教,谢谢。 在MFC中,可以使用CMemoryState检测内存泄露,内存的泄露是由于程序在内存分配和检索中错误使用了C++的new或delete操作符导致的。我 们可以创建CMemoryState对象,来快速查看当前内存的分配情况,不多说了,直接代码吧! 1. 没有 delete. 1. CMemoryState oldMem, newMem, difMem; 2. oldMem.Checkpoint(); // 检测当前的内存使用情况 3. char* c = new char[6]; 4. TRACE0("1-------------------/n"); 5. oldMem.DumpAllObjectsSince(); // oldMem就检测到这里 6. TRACE0("2-------------------/n"); 7. newMem.Checkpoint(); // 没有delete[] c 8. if (difMem.Difference(oldMem, newMem)) // 比较 9. { 10. TRACE0("Memory Lack!/n"); 11. } 12. TRACE0("3-------------------/n"); 13. difMem.DumpStatistics(); // 在Output中打印结果 TRACE0("4-------------------/n"); Outp
CMemoryState的使用看内存监测
最新推荐文章于 2023-08-29 13:22:12 发布