Chinaunix首页 | 论坛 | 博客
  • 博客访问: 185131
  • 博文数量: 49
  • 博客积分: 635
  • 博客等级: 中士
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-25 12:58
文章分类

全部博文(49)

文章存档

2012年(9)

2011年(40)

分类: C/C++

2011-08-30 10:59:03

写程序时总是不小心,所以经常出现段错误,常见的一个原因是指针释放时引起的错误,代码如下:
  1. struct node *p;
  2. for(p = phead; p; p = p->next)
  3.  {
  4.     free(p);
  5.  }
其实,指针p指向的空间已经释放,当下次执行p = p->next操作时,就会发生段错误。正确的做法应该是这样,生命一个tmp指针。
  1. struct *p, *tmp;
  2. for(p = phead; p; p = tmp)
  3.  {
  4.     tmp = p->next;
  5.     free(p); //注意两句话的顺序
  6.  }

阅读(1270) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~