mtrace 跟踪内存泄漏
来源:互联网 发布:adobe音频剪辑软件 编辑:程序博客网 时间:2024/04/19 17:48
mtrace是一个有效的工具来查看有没有内存泄漏。它会将内存出现的异常记录在日志中,而日志的路径是可以指定的。
- #include<stdio.h>
- #include<stdlib.h>
- #include<mcheck.h>
- #include<assert.h>
- int main()
- {
- assert(!setenv("MALLOC_TRACE","./malloc.log",1));
- mtrace();
- int *p= malloc(100*sizeof(int));
- return 0;
- }
我们看上面的代码,mtrace打开跟踪开关,我们malloc了400个字节的内存空间,但是我们并没有调用free将malloc出来的空间释放掉(当然函数退出也就释放了,但是这种释放不太优雅)。
mtrace会将内存情况记录下来,记录的结果存在什么地方呢?由环境变量MALLOC_TRACE决定。所以实际上有两种设置环境变量的方法,一种情况就是代码中体现的:
1 setenv函数设定环境变量 MALLOC_TRACE
- setenv("MALLOC_TRACE","./malloc.log",1)
2 shell设定环境变量MALLOC_TRACE .
- export MALLOC_TRACE=~/program/C/MEM_CHECK/memcheck.log
- root@libin:~/program/C/mem_bug# gcc -o test test.c -g
- root@libin:~/program/C/mem_bug# ./test
- root@libin:~/program/C/mem_bug# ll
- 总用量 28
- drwxr-xr-x 2 root root 4096 2012-04-03 12:17 ./
- drwxr-xr-x 36 root root 4096 2012-04-03 12:01 ../
- -rw-r--r-- 1 root root 155 2012-04-03 12:17 malloc.log
- -rwxr-xr-x 1 root root 8550 2012-04-03 12:17 test*
- -rw-r--r-- 1 root root 208 2012-04-03 12:17 test.c
- root@libin:~/program/C/mem_bug# mtrace ./test malloc.log
- - 0x09a68008 Free 3 was never alloc'd 0x1da8ef
- - 0x09a68028 Free 4 was never alloc'd 0x1da8f7
- Memory not freed:
- -----------------
- Address Size Caller
- 0x09a683b0 0x190 at /home/libin/program/C/mem_bug/test.c:11
0 0
- mtrace 跟踪内存泄漏
- mtrace检查内存泄漏
- mtrace检查内存泄漏
- mtrace检查内存泄漏
- 利用mtrace检查内存泄漏
- 利用mtrace检查内存泄漏
- 利用mtrace检查内存泄漏
- 用mtrace检查内存泄漏
- 用mtrace检查内存泄漏
- linux中用mtrace 检查内存泄漏
- 嵌入式 内存泄漏检测工具valgrind以及mtrace
- 嵌入式 内存泄漏检测工具valgrind以及mtrace
- 使用mtrace进行内存泄漏检查
- Linux mtrace命令检测内存泄漏
- 内存泄漏的跟踪
- MFC内存泄漏跟踪
- 54 跟踪内存泄漏
- mtrace的用法---Linux下内存泄漏检测
- C# 访问SafeNet加密锁注意事项
- mysql索引基础
- 修改命令表 在指定的列后面增加一个字段。
- Android程序:RadioGroup的用法(多选一)
- activex 控件使用过程中出现 “无效的参数数目”
- mtrace 跟踪内存泄漏
- 第3题:求子数组的最大和
- 常用脚本--Excel中筛选出所需要的信息
- Swift中结构体(Struct)和类(Class)的区别
- poj 1723(SOLDIERS)
- 国外的街头3D艺术与咱自家的街头3D艺术
- Delphi 的RTTI机制浅探2
- jsPerf — JavaScript performance playground
- 突击Mercurial SCM(HG)10---配置管理一个新项目