打印

链表问题

[复制链接]
1032|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秋天落叶|  楼主 | 2012-4-7 19:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
....前面略
声明个结构:
struct film{
  char title[20];
  int n;
  struct film * next; next为指向下一个结构的指针
  };
int main()
{
  ........
  struct film * head; 头指针
  struct film * current; 当前指针
  ......
  current=(struct film *)malloc(sizeof(struct film));
  创建一个链表,此处略


  我的问题是释放malloc分配的内存块时,书中使用了下面的代码:
  current=head;
  while(current!=NULL)
  {
  free(current);
  current=current->next; current指向的结构体不是被free刚刚释放了吗,怎么能找得到他的指针成员啊?
  }
   

  我觉得这里加入一个新的指针struct film * p才是对的:
   
  current=head;
  while(current!=NULL)
  {
  p=current->next;
  free(current);
  current=p;   
  }
请高手给说说

相关帖子

沙发
yybj| | 2012-4-7 19:26 | 只看该作者
虽然free了,但是其中的内容还没有变,依然可以访问,只不过不稳定,如果这个内存在你访问之前被修改了,那程序就跑飞了。如果这个内存在你访问之前没有被修改,访问也不会出错。不过不建议这样弄,任何风险在批量使用的时候都会出现概率性的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:落叶很美

138

主题

3044

帖子

1

粉丝