当前位置:   article > 正文

C++/C#检查内存泄漏_c#附加到进程查看内存泄漏

c#附加到进程查看内存泄漏

最近刚换工作,还在试用期,分配给我的也都是些零碎的任务。

前阵子领导扔给我一个小项目,这个项目底层使用C++编写的3D渲染引擎,然后用CLI包装了一下,提供给上层的C#调用。这个项目存在比较严重的内存泄漏问题,由于目前公司写C++的人寥寥无几,写C#的又不太懂如何检测C++的内存泄漏,领导就把这个小任务扔给了我。

本文主要介绍三种内存检测技术:VLD、CRT、Deleaker

1.VLD (Visual Leak Detector)

VLD 介绍

vld是一个免费的、健壮的、开源的内存检测工具,适用于VS2008-2015,使用之前需要先安装,下载地址。下载完之后获得vld-2.5.1-setup.exe,这里我用的是当下最新的2.5.1版本。安装完成之后会在VS的包含目录中默认添加vld的头文件包含路径:


VLD的使用非常简单,只需要在C++项目的任意一个参与编译的cpp文件中引用vld.h头文件


然后在Debug模式下运行程序,当程序退出时,在调试窗口就会打印出产生的内存泄漏


泄漏信息中可以定位到具体的泄漏行,并包括详细的堆栈调用。我用VS2017也试了一下,虽然也能检测到泄漏,但不能定位到具体行,网上有一些所谓的黑科技可以解决,大致就是把VS2017安装目录下的dbghelp.dll覆盖到vld的安装目录下,读者可以自己试一下。

2.CRT(C运行时库)

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/115353
推荐阅读
相关标签
  

闽ICP备14008679号