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