C语言中的野指针

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

野指针的成因

指针未初始化

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

指针越界访问

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

指针指向的空间释放

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

如何规避野指针

指针初始化

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

如下图:

小心指针越界

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

如下图:

避免返回局部变量的地址

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

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

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

如下图:

相关推荐
坤坤子吖9 分钟前
Linux 线程同步与互斥——互斥锁
linux·服务器·c++·笔记·学习
TDTC_XQ14 分钟前
Linux网络编程accept的讲解
linux·服务器·c++
半摆烂日常22 分钟前
手机表单的左滑操作:触摸事件的处理细节
大数据·开发语言·人工智能·智能手机·https·c#
星夜离尘5633 分钟前
MATLAB滑动RMS如何接报警:窗口未满和缺样不能当成正常
开发语言·matlab
开开心心就好40 分钟前
白天晚上自动调蓝光,护眼工具亮度可调
服务器·开发语言·算法·pdf·ocr·intellij-idea·idea
张张123y41 分钟前
后端第十一课:RAG 落地实战(从 0 到 1 接上私有知识库,并设计一个好用的 RAG)
开发语言·人工智能·python·机器学习·fastapi·rag
梅梅绵绵冰43 分钟前
JVM虚拟机
java·开发语言·jvm
FlightYe1 小时前
音视频修炼之容器与协议(一):MP4和MOV的box剖析
android·linux·c++·ffmpeg·音视频
Shaoshing1 小时前
消息顺序
java·开发语言
音草1 小时前
AVL 树详解:从概念到 C++ 实现
c++