vs检测内存泄漏(2)

1、检测

在main函数最后面一行,加上一句_CrtDumpMemoryLeaks()。调试程序,自然关闭程序让其退出(不要定制调试),查看输出:

Detected memory leaks!
Dumping objects ->
{453} normal block at 0x02432CA8, 868 bytes long.
 Data: <404303374       > 34 30 34 33 30 33 33 37 34 00 00 00 00 00 00 00 

{447} normal block at 0x024328B0, 868 bytes long.

2、定位

被{}包围的453就是我们需要的内存泄漏定位值,868 bytes long就是说这个地方有868比特内存没有释放。

在main函数第一行加上:_CrtSetBreakAlloc(453); 意思就是在申请453这块内存的位置中断。然后调试程序,……程序中断了。查看调用堆栈


双击我们的代码调用的最后一个函数,这里是CDbQuery::UpdateDatas(),就定位到了申请内存的代码:

记得加上头文件:#include <crtdbg.h>最后要注意一点的,并不是说有normal block一定就有内存泄漏,当你的程序中有全局变量的时候,全局变量的释放示在main函数退出后,所以在main函数最后_CrtDumpMemoryLeaks()会认为全局申请的内存没有释放,造成内存泄漏的假象。如何规避呢?我通常是把全局变量声明成指针在main函数中new 在main函数中delete,然后再调用_CrtDumpMemoryLeaks(),这样就不会误判了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VS2022内存泄漏检测是指Visual Studio 2022集成开发环境中的一项功能,用于帮助开发者检测和解决程序中存在的内存泄漏问题。 内存泄漏是指在程序中动态分配内存后没有正确释放,导致这些内存空间无法被再次使用,最终导致内存资源的浪费和程序性能下降的情况。内存泄漏问题是软件开发过程中常见的一个难题,如果不及时解决,可能会导致程序崩溃甚至系统崩溃。 VS2022内存泄漏检测功能通过在调试过程中对程序的动态内存分配和释放进行监测,帮助开发者快速定位和解决内存泄漏问题。当程序执行过程中存在内存泄漏时,该功能可以提供一系列的调试工具和报告,帮助开发者追踪到具体的内存泄漏位置和原因。 VS2022内存泄漏检测功能主要包括以下几个方面: 1. 动态内存分配和释放监测:VS2022可以监测程序中的动态内存分配和释放操作,对没有正确释放的内存进行标记和跟踪。 2. 内存泄漏报告:当程序存在内存泄漏时,VS2022可以生成相应的报告,包括内存泄漏的具体位置、泄漏的大小等信息,帮助开发者定位问题。 3. 内存泄漏跟踪:在调试过程中,VS2022可以提供一系列的跟踪工具,帮助开发者追踪到内存泄漏的发生原因,找出造成内存泄漏的代码段。 4. 自动检测和修复:VS2022内存泄漏检测功能可以自动检测程序中的潜在内存泄漏问题,并提供修复建议,方便开发者快速解决问题。 总之,VS2022内存泄漏检测功能为开发者提供了一套全面的工具和报告,帮助他们及时发现和解决程序中的内存泄漏问题,提高程序的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值