-
-
[注意]C/C++程序员不得不关注的问题
-
发表于:
2007-9-16 10:16
4526
-
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *ghh()
{
char *yy=malloc(1000);
//这里的分配没有FREE
return yy;
}
char *res()
{
char *pp=malloc(1000);
//这里的分配没有FREE
return pp;
}
int main()
{
char *vbtt,*fwp;
vbtt=ghh();
vbtt[0]='0';vbtt[1]='1';vbtt[2]='2';vbtt[3]='3';vbtt[4]='4';vbtt[5]='5';vbtt[6]='6';vbtt[7]='7';
printf("__%s_____________\n",vbtt);
sleep(10);
free(vbtt);
//--------------GCC无法释放,BC5.5可以
printf("__%s_____________\n",vbtt);
sleep(10);
fwp=res();
fwp[0]='7';fwp[1]='6';fwp[2]='5';fwp[3]='5';fwp[4]='4';fwp[5]='3';fwp[6]='7';
printf("__%s_____________\n",fwp);
sleep(10);
free(fwp);
printf("__%s_____________\n",fwp);
}
执行结果
============ GCC
__01234567_____________
__01234567_____________
__76554377_____________
__76554377_____________
================BC5.5
__01234567_____________
__x _____________
__76554377_____________
__x _____________
在此通过观察内存情况发现free没有释放malloc函数的指针,这里也有点晕了请高人指点。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)