标签:valgrind sudo href code index drm https 过程 存在
对C、C++的内存泄露、内存溢出等检查,经过这两天的查资料,总体来说可以使用Valgrind, AddressSanitizer, Dr.Memory等。其中Valgrind对程序运行速度影响较大,运行耗时10倍以上,如果是对Android Native代码进行检查,比较推荐对代码进行必要的修改,编译成可执行文件,在pc Linux系统上检测是否存在内存问题。Dr.Memory则比Valgrind的速度快,比较适合在Windows系统中使用。而对于Android上的使用,Google目前则大力推荐使用AddressSanitizer来替代Valgrind.
使用:
sudo apt install valgrind
g++ -g -o testValgrind testValgrind.cpp
valgrind --tool=memcheck --leak-check=full ./testValgrind
这是谷歌目前极力推荐在Android中使用的内存检测工具。
如果使用VisualStudio,则有更为简单的方法做一内存泄露检测,但也只能检测内存泄露。代码如下,参考:
/*
* 1:在每个cpp文件中包含base.h头文件,当然直接把base.h的内容复制到cpp中也可以
* 2:在程序退出的时候调用_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
* 3:在VS的debug模式下
*/
#include "base.h"
#include "stdafx.h"
#include <iostream>
int main()
{
int *a = new int[8];
int *b = (int *)malloc(8 * 7);
a[0] = 5;
a[9] = 99;
std::cout << a[0];
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
return 0;
}
/*
//base.h内容
#ifdef _WIN32
#include <crtdbg.h>
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
#endif
#ifdef _WIN32
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
#endif
*/
标签:valgrind sudo href code index drm https 过程 存在
原文地址:https://www.cnblogs.com/willhua/p/9652907.html