為什麼Delete不自動將指標賦值為NULL?
C語言標準並沒有強制要求自動將指標值設為NULL呼叫刪除運算子後。雖然這似乎違反直覺,但做出這個決定有幾個原因。
效能
如問題中所提到的,將指標設為NULL 的附加指令可能會影響刪除操作的效能,尤其是在效能關鍵的程式碼中。
Const指標
另一個潛在的問題是某些指標可能被聲明為 const。對於這些指針,在刪除操作後嘗試更改其值是不可能的。雖然有人認為可以為此類指標制定特殊情況,但標準選擇在所有情況下都不修改指標值來保持一致性。
非左值參數
刪除運算子可以接受非左值參數,例如右值參考。在這些情況下,無法修改指標的值。這給標準帶來了技術限制,以確保所有參數類型的行為一致性。
Bjarne Stroustrup 的解釋
C 的創建者Bjarne Stroustrup 已經解決了這個問題問題:
因此,雖然在C 中刪除指標不會自動將其設為NULL,但該標準考慮了各種因素,例如效能、const 指標、非左值參數、和一致性來做出這個決定。
以上是為什麼 C 中的「delete」不自動將指標設為 NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!