| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4199 人关注过本帖
标题:删除链表全部节点,并释放他们占用的内存
只看楼主 加入收藏
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
删除链表全部节点,并释放他们占用的内存
for(p = first; p != NULL; p = p->next)     //此循环错误  原因:执行对下一个节点将有一个未定义的效果(大概意思)
   free(p);


正确答案:  struct node *temp;
        p = first;
        while(p != NULL){
        temp = p;                    //这是主要与上面的不同点,那么它存在的必要是什么呢?
        p = p->next;
        free(temp);
       }

求指教
搜索更多相关主题的帖子: 正确答案 
2015-11-09 22:17
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:5 
正确答案:  struct node *temp;
        p = first;
        while(p != NULL){
        temp = p;                    //这是主要与上面的不同点,那么它存在的必要是什么呢?
        p = p->next;
        free(temp);                //这是也是主要与上面的不同点
       }

剑栈风樯各苦辛,别时冰雪到时春
2015-11-09 22:22
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 2楼 林月儿
为什么直接释放p不可以呢?那个原因始终无法理解.  求指点

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-11-09 22:39
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:15 
想一想当 p 被释放后,访问 p->next 会得到什么


[fly]存在即是合理[/fly]
2015-11-10 17:45
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 4楼 azzbcc
soga

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-11-10 23:07
快速回复:删除链表全部节点,并释放他们占用的内存
数据加载中...
 
   



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

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