56.野指针和悬空指针

一.野指针


野指针指的是指针指向的地址是未知的(随机的,不正确的地址)。

二.野指针出现的几种情况

1.定义指针未初始化

#include <stdio.h>int main(void)
{int *p;*p = 1;printf("*p is %d\n",*p);
}

正确写法:

#include <stdio.h>int main(void)
{int a;int *p = &a ;*p = 1;printf("*p is %d\n",*p);
}

2.指针越界

#include <stdio.h>int main(void)
{int a[3] = {1,2,3};int i;for(i = 0;i < 5;i++){printf("*p is %d\n",*(a+i));}}


正确写法:

#include <stdio.h>int main(void)
{int a[3] = {1,2,3};int i;for(i = 0;i < 3;i++){printf("*p is %d\n",*(a+i));}}

三.悬空指针

悬空指针指的是指针指向的地址已经被释放或者不在有效,但是指针本身仍然保留着这个地址,当程序尝试访问悬空指针指向的地址时,可能会导致未定义的行为。

四.悬空指针出现的几种情况


1.指针指向的地址已经被释放或者不在有效

#include <stdio.h>int* test(void)
{int a=1;return &a;
}int main(void)
{int *p = NULL;p = test();printf("a is %d\n",*p);
}


正确写法

#include <stdio.h>
int a=1;int* test(void)
{return &a;
}int main(void)
{int *p = NULL;p = test();printf("a is %d\n",*p);}

五.如何避免

野指针和悬空指针造成的问题往往很隐蔽,所以在使用指针的时候要避免野指针和悬空指针。
1.如果不知道要给指针变量赋值的地址是多少,就初始化为NULL。
2.避免指针越界。
3.指针指向的内存被释放以后要设置为NULL。在使用之前可以先判断指针是不是NULL。

六.视频教程

56.野指针和悬空指针_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/844525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页中的音视频裁剪拼接合并

一、需求描述 项目中有一个配音需求&#xff1a; 1&#xff09;首先&#xff0c;前台会拿到一个英语视频&#xff0c;视频的内容是A和B用英语交流&#xff1b; 2&#xff09;然后&#xff0c;用户可以选择为某一个角色配音&#xff0c;假如选择为A配音&#xff0c;那么视频在播…

命令行解析器浅解

1、什么叫解析器&#xff1f; 解析器&#xff08;parser&#xff09;是一种程序或组件&#xff0c;用于分析输入的数据&#xff0c;并将其转换为更易于处理的格式。解析器在计算机科学中有广泛的应用&#xff0c;特别是在编译器、解释器、自然语言处理和数据格式转换等领域。 1…

内存函数<C语言>

前言 前面两篇文章介绍了字符串函数&#xff0c;不过它们都只能用来处理字符串&#xff0c;C语言中也内置了一些内存函数来对不同类型的数据进行处理&#xff0c;本文将介绍&#xff1a;memcpy()使用以及模拟实现&#xff0c;memmove()使用以及模拟实现&#xff0c;memset()使用…

vue3学习(四)

前言 接上篇学习笔记&#xff0c;分享3个内置组件&#xff1a;动态组件、缓存组件、分发组件基本用法。大家一起通过code的示例&#xff0c;从现象理解,注意再次理解生命周期。 一、code示例 组件A&#xff1a;CompA <script setup> import {onMounted, onUnmounted} f…

[双指针] --- 快乐数 盛最多水的容器

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey 本篇博客我们分享一下双指针算法中的快慢指针以及对撞双指针&#xff0c;下面我们开始今天的学习吧~ &#x1f3e0; 快乐数 &#x1f4d2; 题…

​用 ONLYOFFICE 宏帮你自动执行任务:介绍与教程

使用 ONLYOFFICE 宏&#xff0c;可以来自动实现一些操作节省更多时间和精力。在本文中&#xff0c;我们集合了一些关于宏的教程&#xff0c;带您了解宏的工作原理&#xff0c;以及一些实例展示。 什么是 ONLYOFFICE 宏 如果您是一名资深 Microsoft Excel 用户&#xff0c;那么…

python -【三】循环语句

循环语句 一、while 循环 while 语法 while 条件: 条件满足时&#xff0c;做事情 a 0 while a < 100:print(i like python ...)a 1求 1-100 的总和 i 1 sum 0 while i < 100:sum ii 1 print(f1-100 的和是 {sum})""" 1-100 的和是 5050 &qu…

BH-0.66 6000/5/150电流互感器 塑壳 JOSEF约瑟

BH-0.66 15/5塑壳式电流互感器 BH-0.66 20/5塑壳式电流互感器 BH-0.66 30/5塑壳式电流互感器 BH-0.66 40/5塑壳式电流互感器 BH-0.66 50/5塑壳式电流互感器 BH-0.66 75/5塑壳式电流互感器 BH-0.66 100/5塑壳式电流互感器 BH-0.66 150/5塑壳式电流互感器 BH-0.66 200/5塑壳式…

python——__future__模块

__future__模块是Python的一个特殊内建模块&#xff0c;它提供了一种方式来让程序员在当前版本的Python中使用未来版本的语言特性&#xff0c;从而帮助代码实现向前兼容。这意味着&#xff0c;即使你正在使用的是旧版本的Python&#xff0c;也可以通过导入__future__模块中的某…

BevDet(1): 算法原理介绍介绍

BevDet是一个LSS-Based的实时高性能的多相机3D检测模型,它用4阶段的范式去做3D目标检测,设计上同时支持Segmentation。何谓4阶段范式: 1.图像域的特征提取(Image -view Encoder)2.视角转换 (View Transformer)3.Bev空间特征提取(BEV Encoder)4.任务头Head它涉及 Image View …

202474读书笔记|《我自我的田渠归来》——愿你拥有向上的力量,一切的好事都应该有权利发生

202474读书笔记|《我自我的田渠归来》——愿你拥有向上的力量 《我自我的田渠归来》作者张晓风&#xff0c;被称为华语散文温柔的一支笔&#xff0c;她的短文很有味道&#xff0c;角度奇特&#xff0c;温柔慈悲而敏锐。 很幸运遇到了这本书&#xff0c;以她的感受重新认识一些事…

线程池在业务中的实践

文章目录 1. 业务背景 1. 业务背景 场景一&#xff1a; 快速响应用户请求 场景描述&#xff1a;比如说⽤户要查看⼀个商品的信息&#xff0c;那么我们需要将商品维度的⼀系列信息如商品的价格、优惠、库存、图⽚等等聚合起来&#xff0c;展示给⽤户。 分析&#xff1a;从用户角…

C++标准模板(STL)- C 内存管理库 - 分配并清零内存 (std::calloc)

C 内存管理库 分配并清零内存 std::calloc void* calloc( std::size_t num, std::size_t size ); 分配 num 个大小为 size 的对象的数组&#xff0c;并初始化所有位为零。 若分配成功&#xff0c;则返回指向为任何对象类型适当对齐的&#xff0c;被分配内存块最低&#xf…

大数据Scala教程从入门到精通第十篇:Scala在IDEA中编写Hello World代码的简单说明

一&#xff1a;代码展示 object Main {def main(args: Array[String]): Unit {//SCALA中可以不写;//绿色的小三角达标的是这个类中有一个MAIN方法代表是可以执行的。//ctrl shift f10可以直接运行println("Hello world!")//Java中的类库我们可以直接使用System.o…

TH方程学习(1)

一、背景介绍 根据CW方程的学习&#xff0c;CW方程的限制条件为圆轨道&#xff0c;不考虑摄动&#xff0c;二者距离相对较小。TH方程则可以将物体间的相对运动推广到椭圆轨道的二体运动模型&#xff0c;本部分将结合STK的仿真功能&#xff0c;联合考察TH方程的有用性&#xff…

TransFormer学习之基础知识:STN、SENet、CBAM、Self-Attention

1.空间注意力机制STN 参考链接&#xff1a;STN(Spatial Transformer Networks) 参考链接&#xff1a;通俗易懂的Spatial Transformer Networks(STN) 核心动机&#xff1a; 在空间中捕获重要区域特征(如图像中的数字)&#xff0c;将核心区域进行放大居中&#xff0c;使得结果更…

java面试中高频问题----1

一、乐观锁和悲观锁定义、场景怎么判断用什么&#xff1f; 1.乐观锁&#xff1a; 定义&#xff1a;乐观锁假设大多数情况下&#xff0c;资源不会发生冲突。因此&#xff0c;允许多个线程同时访问资源。 场景&#xff1a;读操作多&#xff0c;写操作少&#xff0c;数据冲突概率…

人工智能的数学基础(高数)

&#x1f31e;欢迎来到人工智能的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年5月29日&…

day21二叉树part07|530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

**530.二叉搜索树的最小绝对差 ** 遇到在二叉搜索树上求什么最值&#xff0c;求差值之类的&#xff0c;都要思考一下二叉搜索树可是有序的&#xff0c;要利用好这一特点。 class Solution { public:void trival(TreeNode* node, vector<int>& nums) {if (node nul…

Linux学习笔记(epoll,IO多路复用)

Linux learning note 1、epoll的使用场景2、epoll的使用方法和内部原理2.1、创建epoll2.2、使用epoll监听和处理事件 3、示例 1、epoll的使用场景 epoll的英文全称是extend poll&#xff0c;顾名思义是poll的升级版。常见的IO复用技术有select&#xff0c;poll&#xff0c;epo…