有些C和C 開發者故意在解除了某個指標引用的記憶體的分配之後,把該指標設為NULL 這為什麼是個好主意

2021-06-25 14:47:34 字數 1315 閱讀 6535

1樓:不露臉的執行者

在大多數c和c++實現中,沒有檢查指標實際上是否指向有效記憶體的途徑.一中常見的錯誤就是:解除了某個記憶體塊的分配,隨後又在程式中引用該記憶體.

此時,該指標所指向的記憶體和可能已重新分配用於其他目的.通過把指標設定為null,程式設計師希望能預防這些有害的引用--在大多數情況下,解除null指標的引用將生成執行時的錯誤.

2樓:

是一個規範問題,不那麼做不會直接導致什麼後果,但是有潛在的弊端。程式設計師寫程式時,難免會有些錯誤,而且自己有時候很難覺察到。否則就不會出錯了。

而且更有些時候,他們心裡想的是沒錯的,只是打錯了。

比如if(i==1);打成了if(i=1);這樣的錯誤是可以編譯過去的,它和i=1; if(i);是沒什麼區別的。

但是如果他養成了使用if(1==i);這樣的程式設計習慣,這種錯誤肯定沒法出現。因為如果寫成1=i是編譯不過去的,給常量賦值了。

你說的問題和這個類似,如果能保證對對銷燬的指標百分之百的正確使用,那麼不給它賦null絕對沒問題。關鍵就是有時候還是有可能錯誤使用的。

指標設為null一方面可以減少這樣的錯誤,另一方面,真正有錯誤時,也方便定位錯誤。

3樓:匿名使用者

我們知道c是比較自由的語言,指標指向的記憶體雖然被清空,沒有設定為null的情況下,指標仍然可用,且可以指向程式記憶體空間的任意地址。程式邏輯上稍有疏忽即可導致修改不該修改的記憶體。

如果清空指標指向的記憶體後,立刻將其設為null,之後針對該指標的分配、呼叫、修改都會引發一個錯誤訊息。

個人認為 delphi 在這方面做的就比較優美,ddelphi呼叫free的時候並不直接呼叫free,而是嘗試首先free,緊跟著設定nil(delphi中的nil等同於c中的null),還有一個專門的函式:freeandnil()

4樓:匿名使用者

這種情況就是大家經常說的野指標問題,為什麼會出現野指標,回答者: chenyayuzx - 經理 五級 這個人已經回答的很完善了,並且,如果你的程式不想出現莫名其妙的錯誤或者正在執行時,突然非法關閉,並且問題不是同樣的,那就表示可能有也指標出現,也指標的查詢也是一個非常痛苦的體力活,所以最好是還是按照標準來寫,釋放完成後,最好把它置成空的。可以有效的防止野指標的數量和形成。

5樓:匿名使用者

因為要是指標沒有把該指標進行指空的話,有可能指標就會指向一個隨即地址,##這是個非常危險的情況,因為隨機地址可能是一個會指向系統或是其他關鍵地方,而修改這些地方可能導致系統的問題。

6樓:

野指標null一可以減少這樣的錯誤

開發者選項在哪,開發者選項怎麼開啟

開啟手機桌面上的的 設定 找到並點選開啟 系統 選項,在系統介面,點選進入 關於手機 找到 版本號 開啟開發者模式,在螢幕中下方會出現 您現在處於開發者模式 的提示,說明已開啟,如果沒有請繼續點選,直至出現為止 手機的開發者選項在設定裡。不過,需要一些操作才能顯示出來,具體操作如下 1 我們在手機中...

手機如何開啟開發者模式,手機開發者模式怎麼關閉?

開啟螢幕進入桌面,找到桌面上的設定,點選它,進入設定。2 進來設定後,劃到最底下,可以看到有乙個關於手機的按鈕,點選進去。3 這時候就會冒出來一堆關於手機引數的東西。不必理會,慢慢找,找到版本號這個東西。然後狂點它,一般都會有提示的。4 一陣狂點後,我們看到這個系統在底部彈出了。您已進入開發者模式。...

開發者模式怎麼退出,進入了開發者模式怎麼關閉

vivo手機退出開發者模式方法如下 一 從狀態列左側下滑呼出通知欄,點選 正處於開發模式 的通知即可關閉開發者選項 三 做好資料備份,進入設定 系統管理 更多設定 備份與重置 恢復出廠設定 還原所有設定,操作後可隱藏開發者選項,退出開發者模式。注 還原所有設定不會刪除軟體或檔案,但會還原所有的設定,...