C语言中的野指针

野指针是指指针指向的位置是随机的,不明确的,未知的,没有限制的

野指针的成因

指针未初始化

如上图,指针没有初始化 ,则指针指向的地址是随机的 ,若该地址已经被其他程序占用,且对指针进行解引用,可能会造成程序出错

指针越界访问

如上图,当i为5时,指针的指向超出数组的范围,该指针为野指针

指针指向的空间释放

如上图,当test()函数运行完后,局部变量a的空间就会被释放掉,此时返回局部变量的地址给p,p为野指针 ,若对该地址进行解引用,可能会造成非法访问

如何规避野指针

指针初始化

当创建一个指针时,如果知道指针指向哪里,就直接赋值,如果不知道指针指向哪里就将指针置为空。

如下图:

小心指针越界

当使用指针指向数组时,要明确数组所能使用的空间,不能超出范围,超出了就是越界访问。

如下图:

避免返回局部变量的地址

使用指针尽量在函数内部使用,避免返回局部变量的地址。

当指针变量不再使用时,及时置空

当指针指向的区域使用完后,若后续不再使用该指针,则要将该指针置为空。 因为约定俗成的⼀个规则就是:只要是NULL指针就不去访问, 同时使⽤指针之前可以判断指针是否为NULL

如下图:

相关推荐
雾岛听蓝19 小时前
Qt操作指南:窗口组成与菜单栏
开发语言·经验分享·笔记·qt
zopple20 小时前
Laravel vs ThinkPHP:PHP框架终极对决
开发语言·php·laravel
松☆20 小时前
C++ 算法竞赛题解:P13569 [CCPC 2024 重庆站] osu!mania —— 浮点数精度陷阱与 `eps` 的深度解析
开发语言·c++·算法
耿雨飞20 小时前
Python 后端开发技术博客专栏 | 第 06 篇 描述符与属性管理 -- 理解 Python 属性访问的底层机制
开发语言·python
耿雨飞20 小时前
Python 后端开发技术博客专栏 | 第 08 篇 上下文管理器与类型系统 -- 资源管理与代码健壮性
开发语言·python
(Charon)20 小时前
【C++/Qt】C++/Qt 实现 TCP Server:支持启动监听、消息收发、日志保存
c++·qt·tcp/ip
2601_9491942620 小时前
Python爬虫完整代码拿走不谢
开发语言·爬虫·python
爱编码的小八嘎20 小时前
C语言完美演绎8-10
c语言
c***892021 小时前
python爬虫——爬取全年天气数据并做可视化分析
开发语言·爬虫·python
aq553560021 小时前
C语言、C++和C#:三大编程语言核心差异详解
java·开发语言·jvm