链表问题

[复制链接]
 楼主| 秋天落叶 发表于 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

粉丝
快速回复 在线客服 返回列表 返回顶部