位置:- 正文

c语言野指针产生的原因(c语言指针妙用)

编辑:rootadmin

推荐整理分享c语言野指针产生的原因(c语言指针妙用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:c++野指针,c语言 野指针,c语言野指针和空指针的区别,c 野指针,c语言野指针以及非法内存操作,c++野指针,c++野指针,c语言 野指针,内容如对您有帮助,希望把文章链接给更多的朋友!

847

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

c语言野指针产生的原因(c语言指针妙用)

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

#include<stdio.h>voidSwap(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,防止产生野指针。

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

以上就是c语言野指针产生的原因,希望对大家有所帮助。更多C语言学习指路:C语言教程

本文链接地址:https://www.jiuchutong.com/zhishi/313308.html 转载请保留说明!
下一篇链接:https://www.jiuchutong.com/zhishi/313309.html
免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络