• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2008-2-13 10:19 | 作者: 网络转载 | 来源: 网络转载 | 查看: 146次 | 进入软件测试论坛讨论

领测软件测试网  相信很多人在用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;
}

Linux)" name=GENERATOR>

    代码很简单,基本上不用做太多的解释。只要在程序退出之前查看一下计数器的计数是否为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元的损失有多大,只是实在是对他们那种态度和素质感到令人作呕。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 内存泄漏


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网