本篇内容主要讲解“c语言野指针是怎么产生的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c语言野指针是怎么产生的”吧!
1、指针变量未初始化,任何指针变量刚被创建时不会自动成为 NULL 指针,它的缺省值是随机的。
所以,指针变量在创建的同时应当被初始化,要么将指针设置为 NULL ,要么让它指向合法的内存。
#include <stdio.h>
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语言野指针是怎么产生的”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4588556/blog/4424397