VLD工具
下载安装VLD(Visual Leak Detector),链接:https://pan.baidu.com/s/1HpahasT3m-nybfOZhZgkNw?pwd=7g5d
提取码:7g5d
我这里使用的是VS2015,默认安装即可。
#include "vld.h"
using namespace std;
void test()
{
char *a = new char[1000];
}
int main()
{
test();
return 0;
}
上述代码中test()函数存在内存泄漏,运行该程序可以在的输出窗口中看到如下内容:
0x00B68FF8即为内存泄漏的地址,也就是指针a指向的内存块地址,该内存块存在内存泄漏,大小为1000字节
测试能不能检测出智能指针循环引用造成的内存泄漏。
#include "vld.h"
#include<memory>
using namespace std;
class B;
class A
{
public :
shared_ptr<B> sp_a;
};
class B
{
public:
shared_ptr<A> sp_b;
};
int main()
{
shared_ptr<A> spA = make_shared<A>();
shared_ptr<B> spB = make_shared<B>();
spA->sp_a = spB;
spB->sp_b = spA;
return 0;
}
CRT库
https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/find-memory-leaks-using-the-crt-library?view=msvc-170#interpret-the-memory-leak-report