避免野指針

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

 

//野指針產生的原因

//指針變量和它所指向的內存空間變量是兩個不同的概念

//釋放了指針所指向的內存空間  但是指針變量本身沒有重置成null

//造成釋放的時候  通過if( NULL != p1 )

 

//避免方法:1)定義指針的時候  初始化成null  2)釋放指針所指向的內存空間之後,把指針重置爲NULL

void main()

{

char*p1 = NULL;

p1= (char *)malloc(100);

if(NULL == p1 )

{

return;

}

strcpy(p1,"111112222");

printf("p1:%s\n",p1);

 

if(NULL != p1 )

{

free(p1);//注意釋放的是指針變量所指向的內存空間,而指針變量本身的值不變,此時p1變成了野指針

p1 =NULL;                //爲了避免這種情況,釋放指針所指向的內存空間以後,還要將指針置空

}

 

//指針容易出錯的情況:所以再次判斷指針變量的值時,NULL != p1仍然成立

if(NULL != p1 )

{

        free(p1);   //對同一快內存區域(已經釋放了內存空間)無法再次釋放。

}

system("pause");

return;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章