#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;
}