c语言野指针产生的原因是什么-成都快上网建站

c语言野指针产生的原因是什么

本篇内容介绍了“c语言野指针产生的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

成都创新互联长期为成百上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为沈河企业提供专业的网站设计、网站建设,沈河网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

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://kswjz.com/article/jhsepc.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流