相信很多人在用C语言编写程序时,常常会用到动态内存分配的函数。而使用这样的函数,往往会一不留神就造成内存泄漏。虽然说世面上有很难多检查内存泄漏的工具,功能也很强大。对于简单检测方式,这三个函数,相对来说,还是比较不错的,也是一种解决内存泄漏问题的方法之一吧。

int *_mem_check(void)......{
static int c=0;
return(&c);
}
void *_malloc(int s)......{
int *c=_mem_check();
void *p=malloc(s);
if(p)......{
(*c)++;
}
return(p);
}
void _free(void *p)......{
int *c=_mem_check();
free(p);
if(p)......{
(*c)--;
}
return;
}代码很简单,基本上不用做太多的解释。只要在程序退出之前查看一下计数器的计数是否为0就可以了。如果是0的话,那很好,你所写的代码没有内存泄漏。如果不为0的话,这个计数器的数,就是记录了你有多少个内存分配没有在程序退出前回收。

int fun(void)......{
void *p=NULL;
int *c=_mem_check();
p=_malloc(1024);
_free(p);
printf("%d ",*c);
return(0);
}
14万+

被折叠的 条评论
为什么被折叠?



