admin管理员组

文章数量:1530080

1.C/C++统计内存泄漏问题

对于查找代码中存在的内存泄漏问题,我们可以使用valgrind工具来检查是否存在内存泄漏问题。比如下面的程序,在堆空间分配20个字节后,程序结束以前并没有释放掉这部分内存。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char** argv) {
  char * output = (char *)malloc(sizeof(char) * 20);
  char * src = "check memory";
  if(!output) {
    fprintf(stderr, "alloc memory failed.");
  }
  memcpy(output, src, strlen(src));
  printf("Output:%s\n",output);
  return 0;
}

在使用下面指令编译生成可执行文件运行后,代码中并没有出现任何异常。

gcc main.c -o main

yongli.tong@tj06009pcu:~/code/slog/test$ ./main 
Output:check memory

我们可以使用valgrind运行后,能够看到如下问题,从输出来看,提示有20bytes的内存泄漏,但是提示如果查看完整信息,需要增加--leak-check=full的字段。

yongli.tong@tj06009pcu:~/code/slog/test$ valgrind ./

本文标签: 覆盖率内存代码方法