| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 679 人关注过本帖
标题:请教一个关于free函数的问题
只看楼主 加入收藏
EBC
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-4-27
收藏
 问题点数:0 回复次数:6 
请教一个关于free函数的问题

本人写了一段测试程序,如下:

#include "stdio.h"
#include "conio.h"
#include "alloc.h"

main()
{
int x;
int *s;
clrscr();
x=11;
s=(int *)malloc(sizeof(int));
*s=x;
printf("\ns[%o]:%d",s,*s);
printf("\nFree...");
getch();
free(s);
printf("\ns[%o]:%d",s,*s);
getch();
}

但是发现其中free函数并没有释放相应的空间,不知道是什么原因,诚心请教高人,感谢指点!

搜索更多相关主题的帖子: free 函数 
2006-05-14 09:58
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
free() 好象不在这里面吧!
#include "alloc.h"

奋斗改变一切!!
2006-05-14 10:44
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 

怎么没有啊
已经free了

不过你检查的那个*S肯定有值了,它是个野指针,内容是垃圾的,


注意的是free的是内存,但是那个指针并没有消失,谁也不知道他会指向哪的

[此贴子已经被作者于2006-5-14 11:01:07编辑过]


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-05-14 10:59
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
我来阐述一下与指针相关的编程规则:
1) 未使用的指针初始化为NULL ;
2) 在给指针分配空间前、分配后均应作判断;
3) 指针所指向的内容删除后也要清除指针本身.
上面的问题就是犯了第3个毛病。在free删除了指针指向的内容后,通常要把指针赋为NULL;
下面给个例子:
#include <stdio.h>
#include <string.h>
int main()
{
char *str=(char *)malloc(100);
strcpy(str,"look!");
free(str); /*正确的方法是在free后加上一句str=NULL;*/
if(str!=NULL) /*这时str是野指针,下面的程序仍能运行*/
{
strcpy(str,"It still can display!");
puts(str);
}

getch();
return 0;
}

对不礼貌的女生收钱......
2006-05-14 15:40
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

1。怎么会没释放?用VC或者DEV-CPP在程序哪里都能释放内存空间。TC我不清楚。可能有点不一样,因为TC是DOS时代的东西,也许是16位的编译器。不知道和这有没有关系。。
2。释放内存后,指针仍然存在,但这时候是野指针。所以,释放后,把指针指向NULL。


我的原则很简单:不做不喜欢的事!
2006-05-14 17:14
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
这么说吧,你想要栋房子,国家划给你了几栋,这时别人想要它们显然不可以

以后要是你把这几栋还给国家了,这房子还是你开始拥有的些房子,但别人可以申请了拥有了

其实free()了,就是这段内存程序别的地方可以申请使用了,里面的东西还在


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-15 00:31
EBC
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-4-27
收藏
得分:0 
非常感谢大家的指点!

谢谢!!!
2006-05-18 22:31
快速回复:请教一个关于free函数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031094 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved