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;
}
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);
}
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/