| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 993 人关注过本帖
标题:关于 链式存储结构的 线性表 释放动态空间问题
只看楼主 加入收藏
zhuchenxi
Rank: 1
等 级:新手上路
帖 子:61
专家分:6
注 册:2011-4-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
关于 链式存储结构的 线性表 释放动态空间问题
int freeP(List P,int *Len)//P是一个链式存储结构的线性表,*Len是长度
{
    int i;
    List Free;//定义一个中间变量
    Free=(list *)malloc(sizeof(int)+sizeof(List));//分配空间
       if(!Free) return ERROR;
    for(i=0;i<=*Len;i++){
        Free=P;//把P付给Free
        free(P);//释放P
        P=(list *)malloc(sizeof(int)+sizeof(List));//在给P分配空间
        if(!P) break;
        P=Free->next;//然后把Free->next付给P
    }
    return OK;
}



为什么不能这么释放链表的 空间??
为什么会出错??
我个人觉得应该没问题啊。
搜索更多相关主题的帖子: 空间 return 线性表 动态 
2011-09-20 23:38
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:10 
分清楚 指针变量的存储空间(地址)   指针变量所指向的存储空间(地址)


free掉后的指针变量指向的地址不可以再去使用
P=Free->next;//然后把Free->next付给P
 
2011-09-21 06:43
zhuchenxi
Rank: 1
等 级:新手上路
帖 子:61
专家分:6
注 册:2011-4-28
收藏
得分:0 
回复 2楼 寒风中的细雨
我还是没想到怎么去释放空间。。。
2011-09-21 23:16
无名可用
Rank: 4
等 级:业余侠客
帖 子:79
专家分:259
注 册:2010-7-27
收藏
得分:10 
int freeP( List P )//P是一个链式存储结构的线性表
{
    if !p return ERROR;
    List next;// Free:代表当前要释放的链表节点的下一节点
    while !p
        next = p -> next;
        free( p );
        p = next;  
    return OK;      
}
这样不知服不服合你的要求。你给的代码不全,所以不太清楚你要表达意思。
不过你的代码中有内存泄露,比如下面这两句
Free=(list *)malloc(sizeof(int)+sizeof(List));//分配空间
Free=P;// 导致你上面分配的空间再也访问不到了

2011-09-22 09:25
zhuchenxi
Rank: 1
等 级:新手上路
帖 子:61
专家分:6
注 册:2011-4-28
收藏
得分:0 
回复 4楼 无名可用
不行
2011-09-22 22:59
快速回复:关于 链式存储结构的 线性表 释放动态空间问题
数据加载中...
 
   



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

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