歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 野指針的產生及其避免

野指針的產生及其避免

日期:2017/3/3 12:28:33   编辑:Linux技術
野指針的產生及其避免
野指針指向一個已刪除的對象或未申請訪問受限內存區域的指針。與空指針不同,野指針無法通過簡單地判斷是否為 NULL避免,而只能通過養成良好的編程習慣來盡力減少。對野指針進行操作很容易造成程序錯誤。
總的來說,野指針是一種內存錯誤。其產生的原因主要有一下幾點:
1:(訪問了不該訪問的內存);
如果我們的指針變量沒有被我們初始化,系統會為我們的編譯器隨機為我們的指針指定內存。既然是系統隨機的指定,那麼我們在後面的取值或者取地址操作,都會是一個隨機的內存中的值。這時候編譯器會報段錯誤。
2;訪問了已經釋放的內存;
如果我們在一個指針變量的內存已經釋放的時候去訪問該內存或者改內存中保存的數據,我們就會出現錯誤。這時候編譯器會報段錯誤。
如何避免野指針造成的內存洩漏?
1:在定義指針的時候,為我們的指針初始化為NULL;//如初始化為NULL (void
*)0;(萬能指針,其中的用法可以參考我的其他博客)
2:可以用malloc函數為指針分配堆空間,具體操作如下:
char *ptr = (char *)malloc (sizeof(char)*
100);
If(ptr == NULL)
{
printf(“malloc error “);
exit(1); //未分配成功提示退出程序
}
bzero(ptr,sizeof(char) * 100); //或memset(ptr
,’\0’,sizeof(char) * 100); 清空內存
scanf(“%s”,ptr);
printf(“ptr = %s\n”,ptr);
free(ptr); //用完釋放
ptr == NULL; //釋放後指向NULL,可以提示你。
以上就是個人的一些見解,希望可以幫到你。
Copyright © Linux教程網 All Rights Reserved