簡體   English   中英

為什么在編譯過程中會發生以下錯誤

[英]why will the following error occur during compilation

作為程序的一部分,我使用了以下代碼:

///////////////
98:::printf("%d",abc->stv)
//////////////
100::if(abc)
//////////////

(產生了以下錯誤)

Possible null pointer dereference: abc - otherwise it is redundant to check if abc is null at line 100

if (abc)測試abc是否為空指針。

編譯器警告您,您已經假定abc不是空指針(通過在第98行對其進行解引用),這意味着

  • if (abc)測試是多余的(因為它永遠不會為真)或
  • 在第98行對abc的取消引用可能不正確,因為abc實際上可能為null。

如果測試abc ,則對編譯器意味着它可能為null。 因此,像abc->stv那樣取消引用指針是可能的錯誤。 一種解決方案是將printf代碼包含在if塊內:

if(abc)
{
    printf("%d",abc->stv)
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM