C语言中的野指针

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

野指针的成因

指针未初始化

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

指针越界访问

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

指针指向的空间释放

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

如何规避野指针

指针初始化

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

如下图:

小心指针越界

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

如下图:

避免返回局部变量的地址

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

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

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

如下图:

相关推荐
爱编码的小八嘎8 分钟前
第2章 认识CPU-2.2 16位微处理器(2)
c语言
honiiiiii9 分钟前
SMU winter week4
c++
zmzb010334 分钟前
C++课后习题训练记录Day105
开发语言·c++·算法
wjs202435 分钟前
Vue3 条件语句
开发语言
_codemonster36 分钟前
JavaWeb开发系列(六)JSP基础
java·开发语言
闻缺陷则喜何志丹1 小时前
【拆位法】P8743 [蓝桥杯 2021 省 A] 异或数列|普及+
c++·蓝桥杯·位运算·拆位法
fpcc1 小时前
跟我学C++中级篇——Concepts的循环依赖
c++·模板和元编程
Web打印1 小时前
Phpask(php集成环境)之16 怎样彻底停用一个网站
开发语言·php
临水逸1 小时前
飞牛fnos 2025 漏洞Java跨域URL浏览器
java·开发语言·安全·web安全
H Corey1 小时前
数据结构与算法:高效编程的核心
java·开发语言·数据结构·算法