当前位置: 首页 > news >正文

什么是野指针和悬空指针?

目录

1. 野指针(Wild Pointer)

2. 悬空指针(Dangling Pointer)


野指针悬空指针都是在C/C++编程中常见的错误,它们会导致程序行为不可预测,甚至引发崩溃或安全漏洞。以下是对两者的详细解释和总结表格:

1. 野指针(Wild Pointer)

  • 定义: 野指针是一个没有被初始化的指针,指向一个未知的或随机的内存位置。
  • 产生原因: 当指针变量声明后没有被赋予有效的内存地址时就会成为野指针。
  • 危害: 访问野指针会导致程序出现不确定的行为,如崩溃、数据损坏,甚至可能引发安全漏洞。
  • 示例:
int *p;  // 未初始化的指针,即野指针
*p = 10; // 未定义行为

2. 悬空指针(Dangling Pointer)

  • 定义: 悬空指针是一个曾经指向有效内存位置的指针,但该内存已被释放或超出了其作用域。
  • 产生原因: 当指针指向的内存被释放(如deletefree操作)或指向的局部变量超出作用域时,指针成为悬空指针。
  • 危害: 使用悬空指针访问已释放的内存可能导致程序崩溃、内存泄漏、或数据损坏。
  • 示例:
int *p = new int(10);
delete p; // p 成为悬空指针
*p = 20;  // 未定义行为

通过正确初始化指针并在释放内存后将指针置为nullptr,可以有效防止野指针和悬空指针的问题。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • NVIDIA驱动学习
  • 【即时通讯】轮询方式实现
  • Android 内置应用裁剪
  • 基于python实现Modis数据的检索与下载
  • React第三章(tsx语法入门 )
  • 移远通信高端5G智能模组SG560D-NA率先通过PTCRB认证
  • 配置WSL(单纯记录
  • Hive任务优化参数整理
  • 【笔记】绪论 轨道交通材料及其加工工艺
  • Version ‘18.19.0‘ not found - try `nvm ls-remote` to browse available versions.
  • torch.stack()方法在数据集构造中的应用
  • 【Rust】008-常用集合
  • 【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析以及计算机网络的分类
  • 一文读懂:如何将广告融入大型语言模型(LLM)输出
  • Android 车联网——CarProperty使用实例(二十三)
  • (三)从jvm层面了解线程的启动和停止
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 78. Subsets
  • ES6语法详解(一)
  • express如何解决request entity too large问题
  • IDEA 插件开发入门教程
  • Java基本数据类型之Number
  • uni-app项目数字滚动
  • WePY 在小程序性能调优上做出的探究
  • 二维平面内的碰撞检测【一】
  • 排序算法之--选择排序
  • 浅谈Golang中select的用法
  • 【云吞铺子】性能抖动剖析(二)
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #pragma data_seg 共享数据区(转)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (bean配置类的注解开发)学习Spring的第十三天
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (SpringBoot)第七章:SpringBoot日志文件
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (补充)IDEA项目结构
  • (分类)KNN算法- 参数调优
  • (力扣)1314.矩阵区域和
  • (南京观海微电子)——示波器使用介绍
  • (算法)前K大的和
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (转载)PyTorch代码规范最佳实践和样式指南
  • . Flume面试题
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net专家(张羿专栏)
  • ??eclipse的安装配置问题!??
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @DataRedisTest测试redis从未如此丝滑
  • @hook扩展分析
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ 第一章] JavaScript 简史