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

<meta content="text/html; charset=utf-8" http-equiv="CONTENT-TYPE"> <meta content="OpenOffice.org 2.3 (Linux)" name="GENERATOR"> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style>

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


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


int * _mem_check( void ) ... {
staticintc=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;
}

<meta content="text/html; charset=utf-8" http-equiv="CONTENT-TYPE">

<meta content="OpenOffice.org 2.3 (Linux)" name="GENERATOR"> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style>

代码很简单,基本上不用做太多的解释。只要在程序退出之前查看一下计数器的计数是否为0就可以了。如果是0的话,那很好,你所写的代码没有内存泄漏。如果不为0的话,这个计数器的数,就是记录了你有多少个内存分配没有在程序退出前回收。

下面是事例代码:

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


文外音:
说实话,我的Blog很久没有更新了。说来也惭愧,这一阶段真的很忙。原本的生活也被打乱了。上面这些东西,都是我平时写程序的时候常会用到的一些代码。觉得蛮实用的就贴出来和大家分享一下。
不过话说回来,近阶段发生的事情还真不少。前些日子我一同学买东西,被黑心老板找了张假的20元,因为当时天冷急着回去。所以没仔细看就收进了。事后我们和他理论,那黑心老板居然还一脸坏笑地大声说:“哦,这是张假币啊。是假币哦。这张假币不是我们这里出来的。”那表情我这一辈子也忘不了,意思就是说:我就是要把假币混给你,你能拿我怎么办。当时很气愤,想报警的,因为使用假币也是属于违法行为。但是后来想想为了20元也犯不着。其实到也不是说20元的损失有多大,只是实在是对他们那种态度和素质感到令人作呕。

北斗星君(黄庠魁)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值