4.14 内存泄露与防范
内存检测工具工具
Mtrace
Valgrind
Dmalloc
Purify
Kcachegrind
MallocDebug
Mtrace的使用
加载头文件,然后在函数开头掉用mtrace函数
/************************************************
* Copyright(C) zhaixue.cc. All rights reserved
*
* Filename: mcheck.c
* Author: litao.wang
* E-mail: 3284757626@qq.com
* Description:
* Create: 2017-11-25 10:02:08
* Last Modified: 2017-11-25 11:26:34
************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<mcheck.h>
int main()
{
mtrace();
char *p,*q;
p =(char *)malloc(32);
q =(char *)malloc(32);
printf("p = %p, q = %p\n",p,q);
free(p);
return 0;
}
gcc mcheck.c -g
export MALLOC_TRACE=mecheck.log #配置默认的log文件
./a.out
mtrace a.out mcheck.log #分析log
广义上的内存泄漏
- 系统频繁地进行内存申请和释放,导致内存碎片越来越多、无
法申请大片连续的内存 - Fastbins:提高内存分配速度的同时,也会带来大量内存碎片
malloc功能调整
设置 mallopt( ) ,以减小内存碎片