//测试代码
#include <crtdbg.h>
void testMemoryLeak()
{
int *a = new int[500];
int *b = new int[500];
//delete a;
}
int main(int argc, char* argv[])
{
_CrtSetBreakAlloc(88);
testMemoryLeak();
_CrtDumpMemoryLeaks();
return 0;
}
方法一:
1.添加使用头文件#include <crtdbg.h>
2.检测:在待检测代码后面添加_CrtDumpMemoryLeaks();执行输出如下,发现有两处泄露编号为88和87
3.定位: _CrtSetBreakAlloc();在检测代码执行前添加该函数,参数为上图的编号,执行后会在泄露出触发异常
方法二:.使用vs诊断工具
注意:以上方法只是说明到检测位置位置申请的内存没有释放,并不代表整个程序没有释放