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