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

時間 2021-06-25 14:47:02

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一可以減少這樣的錯誤

小公尺9se開發者選項在哪,小公尺九開發者選項在哪

首先進入小公尺手機的 設定 我的裝置 再點選 全部引數 在 全部引數 頁面,連續 快速點選 miui版本 一行,一般點選3次後,會提示 現在只需再執行4步操作即可進入開發者模式 然後繼續點選4次,就成功開啟了開發者模式,出現提示 您現在處於開發者模式 小公尺九開發者選項在哪 這裡一步一步找出小公尺手...

三星沒有開發者選項,我的三星手機沒有開發者選項

您好 您的samsung mobile要開啟開發者選項建議按下列步驟進行操作 1 點選 設定 系統 關於裝置 內部版本 2 此時會提示開發者模式已啟用 3 再點選 設定 系統 開發者選項 來進入開發者選項 希望這能幫到您 我的三星手機沒有開發者選項 可以觸控手機的應用程式 設定 更多 關於裝置 內部...

iphone開發者選項設定在哪

小胖天天說 蘋果手機開發者選項在 蘋果手機怎麼設定信任開發者 坑b太多了 iphone是ios系統並沒有什麼開發者選項,你所說的開發者選項是基於安卓系統的手機。 剛越獄完成,剛進越獄軟體的時候可以選擇是以開發者進入還是使用者。 專賣電動車 蘋果手機沒有開發者選項哦,據我所知! 京局石段 連線itoo...