实用小代码之内存泄漏检测

        相信很多人在用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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值