需要判斷指標為空嗎

2021-05-21 19:44:06 字數 575 閱讀 3002

前幾天,kok3客戶端因為我的資源配置錯誤而崩潰了。

偵錯程式帶我到了出錯的**行,是乙個空指標解引用。

**大致如下:

item* pitem = itemlist.getitem(index);

return *pitem;

getitem方法如下:

item* itemlist::getitem(int index)

錯誤是因為資源載入出錯,列表為空,所以getitem()返回null.

對於資源載入出錯,應該載入時就提示出錯,不應該在使用時才報錯。

getitem()做了索引越界出錯處理,所以它的呼叫者必須檢查其返回值。

假設itemlist的指標元素保證不為空,正常情況下,索引正確情況下都不會返回空指標。

這種情況下,新增斷言是必要的。

item* pitem = itemlist.getitem(index);

assert(pitem);

return *pitem;

item* itemlist::getitem(int index)

對與索引值,還是用無符號數為好,可省去下界溢位斷。

c 判斷指標為空 關於C中指標為空的判斷

在看c中指標是否為空的判斷說明時,出現了分歧。if ptr 如果 p 非空,則完成 if ptr 如果 p 為空,則完成 而我在林銳博士 c程式設計規範 一文中看到,為了和bool型別的判斷區分,他建議 判斷指標使用 if null ptr or if null ptr 這種方式。但是,按照 c 之...

數字判斷(指標為函式引數)

題目描述 輸入乙個字串,判斷這個字串是否乙個完全整數值的字串,例如輸入 1234 那麼表示整數1234,輸入 12a3 就表示只是乙個字串,不是乙個整數 要求編寫函式isnumber,引數是乙個字元指標,返回值是整數型別 如果字串表示乙個整數,則計算出這個整數並且返回 如果字串不是表示乙個整數,則返...

判斷指標是否有效

在各類搜尋引擎 bbs裡搜尋,一般得到的答案都是無法判斷的。不過在特定的屬性內是可以判斷的。因為winapi有容錯機制。演示下 hglobal p globalalloc gmem zeroinit,4 int val 100 writeprocessmemory invalid handle va...