8.18 為什麼在調用 free() 之後指針沒有變空?使用 (賦值, 比較)  釋放之後的指針有多麼不安全?

當你調用 free() 的時候, 傳入指針指向的內存被釋放, 但調用函數的指針 值可能保持不變, 因為 C 的按值傳參語義意味著被調函數永遠不會永久改變 參數的值。 參見問題 4.4

嚴格的講, 被釋放的指針值是無效的, 對它的任何使用, 即使沒有 解參照, 也可能帶來問題, 儘管作為一種實現質量的表現, 多數實現都不會 對無傷大雅的無效指針使用產生例外。

參考資料: [ISO, Sec. 7.10.3]; [Rationale, Sec. 3.2.2.3]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)