首頁  >  文章  >  後端開發  >  為什麼 C 中的「delete」不自動將指標設為 NULL?

為什麼 C 中的「delete」不自動將指標設為 NULL?

Linda Hamilton
Linda Hamilton原創
2024-11-24 22:00:18463瀏覽

Why Doesn't `delete` Automatically Set Pointers to NULL in C  ?

為什麼Delete不自動將指標賦值為NULL?

C語言標準並沒有強制要求自動將指標值設為NULL呼叫刪除運算子後。雖然這似乎違反直覺,但做出這個決定有幾個原因。

效能

如問題中所提到的,將指標設為NULL 的附加指令可能會影響刪除操作的效能,尤其是在效能關鍵的程式碼中。

Const指標

另一個潛在的問題是某些指標可能被聲明為 const。對於這些指針,在刪除操作後嘗試更改其值是不可能的。雖然有人認為可以為此類指標制定特殊情況,但標準選擇在所有情況下都不修改指標值來保持一致性。

非左值參數

刪除運算子可以接受非左值參數,例如右值參考。在這些情況下,無法修改指標的值。這給標準帶來了技術限制,以確保所有參數類型的行為一致性。

Bjarne Stroustrup 的解釋

C 的創建者Bjarne Stroustrup 已經解決了這個問題問題:

  • 他期望實現自動包含歸零的功能在delete後輸出左值操作數,但這種做法並沒有被廣泛採用。
  • 但是,他強調delete的參數可能並不總是左值,這給這種行為的標準化帶來了技術上的困難。

因此,雖然在C 中刪除指標不會自動將其設為NULL,但該標準考慮了各種因素,例如效能、const 指標、非左值參數、和一致性來做出這個決定。

以上是為什麼 C 中的「delete」不自動將指標設為 NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn