Linux下检测内存泄漏
转自 https://blog.csdn.net/weixin_36343850/article/details/77856051Linux下检测内存泄漏使用Linux命令检测内存泄漏#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>void gree
·
Linux下检测内存泄漏
使用Linux命令检测内存泄漏
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
void greeting(int nSize)
{
char* p = (char*)malloc(nSize * sizeof(char));
if(nSize < 12 || p == NULL)
{
printf("out of memory\n");
return;
}
strcpy(p, "Hello world");
free(p);
}
int main()
{
while(1)
greeting(11);
}
对于以上代码,在greeting
函数中,程序不断申请内存,但是并未对其内存进行释放就直接返回main
函数,导致内存不断处于泄露。
使用ps命令分析
使用top命令检测
使用mtrace工具进行分析
-
首先设置环境变量,
MALLOC_TRACE
表示输出文件的存放路径MALLOC_TRACE=/home/kkk/output.txt export MALLOC_TRACE
-
在要检测的代码中引入
include <mcheck.h>
头文件 -
放置函数
mtrace()
于分配内存代码的前端,在分配内存的代码结构后放置函数muntrace()
。然后运行代码。查看输出文件的内容。
使用valgrind工具检测内存泄漏
更多推荐
已为社区贡献1条内容
所有评论(0)