野指針的產生及如何避免野指針


野指針的定義及產生:

  野指針指向一個已刪除的對象或未申請訪問受限內存區域的指針。與空指針不同,野指針無法通過簡單地判斷是否為 NULL避免,而只能通過養成良好的編程習慣來盡力減少。以char *p類型指針為例說明。

避免訪問野指針的方法:

1.任何指針變量剛被創建時不會自動成為NULL指針,它的缺省值是隨機的,它會亂指一氣。所以,指針變量在創建的同時應當被初始化,要么將指針設置為NULL,要么讓它指向合法的內存。

申請后初始化或立馬malloc:

  char *p;int a;

  p = NULL;

  或p = &a;

  或:p = (char *)malloc(sizeof(char) * 8);

    memset(p,0,8);

2. 釋放后清零

  針對存放新malloc內存地址的p,不使用時必須通過free(p)來釋放該段內存的使用權,但蛋蛋free是不夠的,free后p中值(原內存地址)不會自動變化。故必須p = NULL;避免誤訪問已經沒有使用權的內存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM