為什麼刪除不會自動將指標設為NULL
儘管它在防止無效指針相關的崩潰方面有潛在的好處,但C 標準並沒有要求刪除操作符在釋放記憶體後自動將指標設為NULL。做出此決定的原因是多方面的。
效能
新增將指標設為 NULL 的指令可能會降低刪除操作的效能。雖然這對於大多數應用程式來說可能可以忽略不計,但它可能會影響效能關鍵型系統。
常數
常數指針提出了潛在的挑戰。將 const 指標設為 NULL 會違反其不變性,從而導致未定義的行為。但是,該標準可以為 const 指標提供特殊情況,允許將它們設為 NULL。
參數彈性
標準明確允許刪除的參數是一個右值,而不僅僅是一個左值。例如,刪除數組涉及將數組名稱指定為參數:delete [] array;。在這種情況下,不可能將指標設為 NULL,因為刪除後它沒有指向有效的記憶體位置。
其他注意事項
Bjarne Stroustrup, C 的創建者承認刪除期間自動設定 NULL 的潛在好處,但指出實現者尚未廣泛採用這種做法。他還強調程式設計師需要保持警惕,確保在釋放後正確處理指針。
總之,雖然透過刪除自動設定 NULL 會有好處,但 C 標準選擇不強制執行它,因為效能問題、適應某些情況的需要以及程式設計師在管理指標方面的責任的重要性。
以上是為什麼 C 中的'delete”不自動將指標設為 NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!