C语言如何中避免野指针:
1.初始化的是定义指针变量的时候,指针变量赋值成null
2释放的时候,判断是不是null
3 释放完毕以后再赋值成null
看下面程序:
#include<stdio.h>
#include<stdlib.h>
int main()
{
//1.初始化的是定义指针变量的时候,指针变量赋值成null
char *p = NULL;
p=(char *)malloc(100);
printf("p 开始指向空间地址%d \n",p);
//2释放的时候,判断是不是null
if(p != NULL)
{
free(p);
//3 释放完毕以后再赋值成null
printf("p 释放后指向空间地址%d \n",p);
p = NULL;
printf("p == NULL 指向空间地址%d \n",p);
}
system("pause");
return ret;
}
其内存分配图:
程序运行结果:
首先要理解char *p 其是一个变量,需要4个字节空间,指针指向谁就是把谁的地址赋值给这个指针变量,其在释放空间的时候只是释放指针变量的值作为首地址的一段空间,其并不影响指针变量的值。