c++常用的检查方法
@1:在window下
A:静态代码检查可以使用 使用教程 https://blog.youkuaiyun.com/liweibin812/article/details/84544750
TscanCode 腾讯开发 ,是一个工具,直接打开就可以使用
B:动态检查可以是用 vld 插件 可以安装在 vs上
@2:在linux上
动态检查 Valgrind
使用教程 https://blog.youkuaiyun.com/tumblerman/article/details/4164421
@3:使用VS自带的方法
转载:http://blog.youkuaiyun.com/dyx810601/article/details/52092835 感谢作者:大白机器人
定位内存泄漏是C++的一个大问题
我们可以通过如下方式进行定位:
//在主函数文件中加入如下代码
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
usingnamespace std;
void EnableMemLeakCheck()
{
int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpFlag |= _CRTDBG_LEAK_CHECK_DF; _CrtSetDbgFlag(tmpFlag);
}
int main()
{
EnableMemLeakCheck(); //_CrtSetBreakAlloc(这里有第一遍注释掉, 第二遍再执行); 自己的代码
return 0;
}
在 debug 模式下,可以看到如下信息:
此时我们注意大括号的内容,这就是可以我们的程序内存泄漏的地方。
将上面注释掉的代码加入,并将大括号的数字填入,就可以让程序停在内存泄漏的地方。
如下,这里我们让程序停在 556 处
//在主函数文件中加入如下代码
#include
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
void EnableMemLeakCheck()
{
int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmpFlag);
}
usingnamespace std;
int main()
{
EnableMemLeakCheck(); //_CrtSetBreakAlloc(556); 自己的代码
}