nextp) { nextp = listp->next; free(listp); }
请注意如果在循环表达式中没有使用临时变量 nextp, 而使用 listp = listp-> next会产生什么恶劣后果...学生:为什么在调用 free() 之后指针没有变空?使用 (赋值, 比较) 释放之 后的指针有多么不安全?...小林:当你调用 free() 的时候, 传入指针指向的内存被释放, 但调用函数的指针值 可能保持不变, 因为 C 的按值传参语义意味着被调函数永远不会永久改变参数的值。...严格的讲, 被释放的指针值是无效的, 对它的任何使用, 即使没有解参照, 也可 能带来问题, 尽管作为一种实现质量的表现, 多数实现都不会对无伤大雅的无效指 针使用产生例外。