您的位置:首页 > 其它

避免野指针的产生

2015-08-03 16:19 197 查看
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");


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针