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 ./