c语言野指针是怎么产生的

本篇内容主要讲解“c语言野指针是怎么产生的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c语言野指针是怎么产生的”吧!

创新互联专注于大化企业网站建设,成都响应式网站建设公司,商城网站制作。大化网站建设公司,为大化等地区提供建站服务。全流程按需制作网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

1、指针变量未初始化,任何指针变量刚被创建时不会自动成为 NULL 指针,它的缺省值是随机的。

所以,指针变量在创建的同时应当被初始化,要么将指针设置为 NULL ,要么让它指向合法的内存。

#include 
void Swap(int *p1,int *p2)
{
 int *tmp;
 *tmp=*p1;
 *p1=*p2;
 *p2=*tmp;//*p1指向了无效地址,程序会给出警告,使用了未初始化的局部变量tmp,*tmp的值无法被访问,因为tmp未初始化,它的地址是个随机值(0xcccccccc)
}

如果没有初始化,编译器会报错‘point’ may be uninitializedin the function。

2、指针释放后之后未置空。

指针在 free 或 delete 后未赋值 NULL ,它们只是把指针所指的内存给释放掉,但并没有处理指针本身。此时指针指向不可知的(随机的、不正确的、没有明确限制的)。

释放后的指针应立即将指针置为NULL,防止产生野指针。

int main()
{
 char  *p;
 p=(char*)malloc(10);
 printf("%s\n",p);
 if(p!=NULL)
 {
 free(p);
 }
free(p);//再次释放p时,因为前面已经被释放了一次,再次释放会报错
return 0;
}

到此,相信大家对“c语言野指针是怎么产生的”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


新闻标题:c语言野指针是怎么产生的
当前网址:http://hbruida.cn/article/ihescg.html