标题:有关free函数的问题
只看楼主
魏新建
Rank: 2
等 级:论坛游民
帖 子:55
专家分:86
注 册:2012-2-17
结帖率:100%
已结贴  问题点数:20 回复次数:6 
有关free函数的问题
/*清除线性表中所有的元素,释放空间,使之成为一个空表*/
int clearlist(List *w)
{
    if(w->list!=NULL)
    {
        free(w->list);
        w->list=NULL;
        w->maxsize=0;
        w->size=0;
    }
    return 1;
这个函数中,为何释放空间后,还要让w->list=NULL;,free后的指针不是空指针吗?
搜索更多相关主题的帖子: free 函数 return 线性表 元素 
2012-02-24 16:14
gb5543925
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2012-2-24
得分:4 
避免调用w->list时使用已free的堆空间,所以要让w->list指向NULL,顺带防止野指针的出现。
2012-02-24 16:30
天天涯涯
Rank: 4
等 级:业余侠客
帖 子:215
专家分:267
注 册:2011-10-17
得分:4 
学习了
2012-02-24 18:09
为了未来
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:26
专家分:20
注 册:2012-2-18
得分:4 
学习了  
2012-02-24 18:20
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
得分:4 
程序代码:
int clearlist(List *w)
{
    if(w->list!=NULL)
    {
        free(w->list);
        w->list=NULL;
        w->maxsize=0;
        w->size=0;
    }
    return 1;
}
你这里写错了吧。。
 if(w->list!=NULL)
 应该是while(w->lis!=NULL)
{
  在写
}
你这样只是释放一个节点啊。
free 释放指针指向的内存 并不把指针赋值为空

用心做一件事情就这么简单
2012-02-24 18:38
魏新建
Rank: 2
等 级:论坛游民
帖 子:55
专家分:86
注 册:2012-2-17
得分:0 
回复五楼:
没有吧,书上是那么写的,还有w是一个指针,指向一个结构体里面的整形数组。不会书上写错了吧。free释放指针指向的内存,那么指针还指向那个地址吗?
2012-02-25 13:31
不二庚庚
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-4-1
得分:0 
额,学习!
2012-03-01 14:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-361557-1-1.html




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

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