亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么不刪除將指針設置為NULL?

為什么不刪除將指針設置為NULL?

C++
嚕嚕噠 2019-10-16 14:29:27
我一直想知道為什么刪除后將指針自動設置為NULL 并不是標準的一部分。如果得到解決,那么由于無效指針而導致的許多崩潰將不會發生。但話雖如此,我仍然可以想到該標準將限制此限制的幾個原因:性能:附加說明可能會降低delete性能??赡苁且驗閏onst指針。然后我想標準再次可以為這種特殊情況做些什么。有誰知道不允許這樣做的確切原因?
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

Stroustrup自己回答。摘錄:


C ++明確允許delete的實現將左值操作數清零,我曾希望實現能夠做到這一點,但是這種想法似乎在實現者中并不流行。


但是他提出的主要問題是delete的參數不必是左值。


查看完整回答
反對 回復 2019-10-16
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

首先,設置為null將需要內存存儲的變量。的確,您通常在變量中有一個指針,但有時您可能想刪除一個剛計算出的地址處的對象。使用“無效”刪除將是不可能的。

然后是性能。您可能以這樣的方式編寫了代碼:刪除完成后,指針將立即超出范圍。用null填充只是浪費時間。C ++是一種具有“不需要它?然后您不必為此付出代價”的思想的語言。

如果您需要安全保護,則可以使用各種各樣的智能指針,也可以編寫自己的更好,更智能的指針。


查看完整回答
反對 回復 2019-10-16
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

您可以有多個指向該內存的指針。如果您為刪除指定的指針設置為null,但所有其他指針都不設置為null,則會產生錯誤的安全感。指針不過是一個地址,一個數字。也可能是帶有取消引用操作的int。我的觀點是,您還必須掃描每個指針,以找到那些引用了剛刪除的同一內存的指針,并將它們也清空了。掃描所有指向該地址的指針并將其清空的計算量很大,因為該語言不是為此設計的。(盡管其他一些語言也構造了它們的引用,以不同的方式實現相似的目標。)


查看完整回答
反對 回復 2019-10-16
  • 3 回答
  • 0 關注
  • 1032 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號