内存泄漏很难追查,因为不能轻松地在内存中查看哪些对象在使用中,以及最初把对象分配到什么内存中。然而有一些程序可以自动完成这项工作。有很多内存泄漏检测工具,从昂贵的专业的软件包可以免费下载的工具。如果使用的是Microsoft Visual C++,其中调试库内建了内存泄漏检测的支持。这个内存泄漏检测默认情况下没有启用,除非创建的是MFC项目。要在其他项目中启用它,需要在代码开头添加三行代码。
请注意新定义的new运算符在语句中,所以只有在编译调试版的应用程序时,才会使用新的new。这通常就是所需要的。发行版通常不会执行任何内存泄漏的检测。
这行代码告诉Visual C++CRT(C运行时)库,在应用程序退出时,将所有检测到内存泄漏写入测试输出控制台。对于前面那个存在内存泄漏的程序,调试控制台应该会包含以下输出。
这个输出清楚地表明了在哪个文件的哪一行分配了内存但是没有释放。文件名后面括号中的数字就是行号。话括号之间的数字是内存分配的计数器。例如,(147)表示这是程序开始之后进行的第147次分配。可以使用VC++的CrtSetBreak AllocO函数告诉VC++调试运行时,进行特定分配时进入调试器。
在这个有内存泄漏的程序中,有两处泄漏——第一个Simple对象没有释放,这个对象在堆中创建的整数也没有释放。在Visual C++的调试器输出窗口中,只需要双击某个内存泄漏,就可以自动跳到代码中的那一行。
通过这些工具提供的信息,可以找到实际的问题。通常情况下,需要逐步跟踪代码,找到指向某个对象的指针在哪里改写了,而原始对象却没有释放。大多数调试器都提供了“观察点”功能,用于在发生这类事件时中断程序的执行。
★关于WorkWin公司电脑监控软件★
WorkWin的使命是打造Work用途的Windows 电脑系统,有效规范员工上网行为,让老板知道员工每天在做什么(监控包括屏幕、上网在内的一举一动),限制员工不能做什么(禁止网购、游戏、优盘等)。
WorkWin基于纯软件设计,非常容易使用,无需添加或改动任何硬件,使用一台管理机监控全部员工机电脑。历经南京网亚十余年精心打造,此时此刻每天都有成千上万企业电脑正在运行WorkWin,选择WorkWin选择“赢”。
版权所有,南京网亚计算机有限公司 。本文链接地址: 通过Visual C++在Windows中查找并修复内存泄漏