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

2021-06-25 14:47:35 字數 1315 閱讀 8460

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.關閉就可以了 一 開啟手機 設定 應用程式 全部 找到 設定 然後點選它 二 接下來點選 清除資料 之後會自動回到手機桌面 三 清空手機資料之後 開發人員選項 就沒有了。樓主,您好!請問您為什麼要將...

開發者選項設定,怎樣調開發者選項最好?

如果您使用的是華為手機,調出和隱藏開發人員選項方法如下 1 調出開發人員選項,手機出廠時預設隱藏 開發人員選項,請按以下操作 進入關於手機介面 emui3.x emui4.x emui5.x 設定 關於手機 emui8.x emui9.x 設定 系統 關於手機 magic ui 2.0 2.0.1 ...

realme怎麼關閉開發者選項

realme ui 路徑 設定 其他設定 開發者選項,關閉開發者選項開關。需要開啟開發者選項才能在其他設定中找到此選項 realme ui 路徑 設定 系統設定 開發者選項,關閉開發者選項開關。需要開啟開發者選項才能在其他設定中找到此選項 realme關閉開發者選項的方法是 1 開啟realme 手...