1,所谓野指针就是:指向一个已删除的对象或未申请访问受限内存区域的指针。
避免方法:在使用free释放指向内存空间之后载加上一个 p = NULL;
例:
if (p2 != NULL)
{
free(p2);
p2 = NULL;
}
void main01()
{
char buf[100];
//byte b1 = new byte[100];
int a = 10; // 分配4个字节的内存 栈区也叫临时区
int *p;// 分配4个字节的内存
p = &a; //cpu 执行的代码,放在代码区
*p = 20; //
{
char *p2 = NULL; // 分配4个字节的内存 栈区也叫临时区
p2 = (char *)malloc(100); // 内存泄露概念
if (p2 != NULL)
{
free(p2);
//p2 = NULL; 若不写,实验效果 ,分析原因
}
// 若不写则产生一个野指针,所谓野指针就是内存地址指向一堆乱码的指针
// 原因:指针变量和它所指向的内存空间变量是两个不同的概念,这里的 free释放了p2 指向的内存空间,但是指针变量本身没有重置成 NULL
// 造成if中判断 p2! =NULL成立
// 避免方法:定义指针的时候初始化成 NULL
if (p2 != NULL)
{
free(p2);
}
}
system("pause");
}