8.18 为什么在调用 free() 之后指针没有变空?使用 (赋值, 比较)  释放之后的指针有多么不安全?

当你调用 free() 的时候, 传入指针指向的内存被释放, 但调用函数的指针 值可能保持不变, 因为 C 的按值传参语义意味着被调函数永远不会永久改变 参数的值。 参见问题 4.4

严格的讲, 被释放的指针值是无效的, 对它的任何使用, 即使没有 解参照, 也可能带来问题, 尽管作为一种实现质量的表现, 多数实现都不会 对无伤大雅的无效指针使用产生例外。

参考资料: [ISO, Sec. 7.10.3]; [Rationale, Sec. 3.2.2.3]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)