C/C++统计内存泄漏问题和代码覆盖率的方法

本文介绍了如何利用valgrind工具检测C/C++程序中的内存泄漏,并通过gcov统计代码覆盖率。通过valgrind的--leak-check=full选项,可以精确定位内存泄漏位置。同时,使用gcov进行代码覆盖率分析,帮助在开发阶段发现潜在问题和无效代码。在执行gcov时,解决软连接版本不匹配的问题是关键。
摘要由CSDN通过智能技术生成

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 ./
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值