刪除指標後將其設為 NULL 的做法通常被認為是一種好的做法,但事實並非如此正如人們想像的那樣普遍適用。
在 C 中,可以將指標設為 NULL 以避免潛在的潛在風險兩次刪除導致的崩潰。當指標設定為 NULL 時,任何後續刪除它的嘗試都是無害的。這與刪除已刪除的指標相反,後者可能導致未定義的行為。
考慮以下範例:
Foo* foo = 0; // Sets the pointer to NULL delete foo; // Won't do anything
這裡,指標原本設定為 NULL ,所以嘗試刪除它不會有任何效果。
但是,如果指標沒有設定為NULL:
Foo* foo = new Foo(); delete foo; // Deletes the object delete foo; // Undefined behavior
第二次刪除操作會導致未定義的行為,因為指標已經被刪除並且它指向的記憶體已經被釋放。
雖然刪除後清空指標可以防止崩潰,它還可以掩蓋雙重刪除錯誤,使它們無法處理。最好完全避免雙重刪除錯誤,但實際上,這可能很困難。
智慧型指標透過自動管理記憶體來解決此問題,無需手動刪除。但是,對於遺留程式碼或首選手動記憶體管理的特定場景,刪除後將指標清空有助於防止崩潰,但應謹慎使用。
以上是刪除後清空指針:預防措施還是潛在的陷阱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!