c++/c中野指针和悬空指针的示例

目录

一、野指针的概念

二、野指针示例

三、悬空指针的概念

四、悬空指针示例

1.指针释放后未置空

2.返回栈内存地址的指针


一、野指针的概念

        野指针是指尚未初始化的指针,它指向的地址是未知的、不确定的、随机的。这种指针在使用时可能导致程序崩溃、数据损坏或其他不可预见的错误。

二、野指针示例

指针变量尚未初始化

int main() {  int* ptr; // 声明一个指针ptr,但未初始化  *ptr = 20; // 尝试向p指向的内存地址写入20,但由于ptr是野指针,指向的地址未知,这可能导致程序崩溃  return 0;  
}

解决方法:  在声明指针时立即初始化它,或者确保在使用之前进行初始化。

int *ptr = NULL; // 将指针初始化为NULL

      

三、悬空指针的概念

        悬空指针指的是一个指针变量指向了已经被释放(例如,通过调用deletefree)的内存地址。此时,由于这块内存可能已经被操作系统重新分配给其他程序使用,或者其内容已经被改变,再次通过悬挂指针访问该内存地址可能会导致未定义的行为,比如程序崩溃、数据损坏等。

四、悬空指针示例

1.指针释放后未置空

         当一个指针指向的内存被deletefree释放后,这块内存可能已经被操作系统回收并重新分配给其他程序使用。此时,如果继续使用该指针访问内存,就可能导致悬空指针问题。

示例:

int main() {int *ptr = (int*)malloc(sizeof(int));   // ptr分配了一个int类型的字节大小为4*ptr = 10;  free(ptr); // 释放内存,但ptr没有被置为NULL  // ... 一些其他代码 ...  *ptr = 20; // 继续访问,可能导致程序崩溃或数据损坏
}

解决方法:在释放完内存之后,将指针置为NULL。

2.返回栈内存地址的指针

        如果一个指针指向了一个对象,但该对象的生命周期已经结束(例如,一个局部对象在函数返回后),那么该指针就变成了悬空指针。因为该对象所占用的内存可能已经被回收或覆盖,再次通过该指针访问该对象将导致未定义的行为。

示例:

int main() {int* getStackValue() {  int a = 20;  return &a; // 返回栈内存地址的指针}  int main() {  int *ptr = getStackValue();  printf("%d\n", *ptr); // 可能导致未定义行为  return 0;  }
}

        变量a存储在栈内存,在getStackValue函数执行完以后,系统会自动回收a的这段内存。

解决方法避免返回指向栈内存的指针,或者确保在指针的生命周期内不会访问已经释放的栈内存。

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

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

相关文章

Kafka性能优化策略综述:提升吞吐量与可靠性

Kafka性能优化策略综述:提升吞吐量与可靠性 优化 Kafka 的性能可以从多个方面入手,包括配置调优、架构设计和硬件资源优化。下面详细介绍一些常用的优化策略: 1. 分区设计 增加分区数量:更多的分区意味着更高的并行处理能力&am…

ZDH-智能营销-标签模块

目录 主题 项目源码 预览地址 安装包下载地址 标签模块 什么是标签 标签场景分类 标签设计 标签按照场景做了分类,但是运营人员需要感知到吗 标签按照场景做了分类,底层的计算引擎是否需要划分? 标签模块,是否需要涉及…

openresty安装并使用lua进行业务逻辑处理

OpenResty 基础教程及Lua动态脚本实现 OpenResty 简介 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,它将 Nginx 的 C 模块和 Lua 脚本相结合,提供了一个强大的 Web 应用服务器和反向代理服务器。OpenResty 特别适合处理高并发的 Web 应用&am…

爽快,通透,自洽

那些消耗你的人和事,多看一眼都是你的不对。不必过度为他人提供情绪价值,可以理解别人的处境,但边界感很重要。让别人开心不是你的责任。控制情绪不是让我们在生活中隐藏情绪,而是允许自己有情绪,并做自己情绪的主人。…

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营)

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营) 搭建教程 1、程序为thinkPHP5开发 php版本要求5.6!不支持虚拟主机! 2、上传程序到您的根目录!导入m213.sql文件!修改数据库配置文件app…

WordPress模板推荐

WordPress外贸主题 wordpress跨境电商独立站主题,wordpress外贸建站模板。 手机配件wordpress外贸网站模板 充电器、移动电源、手机膜、手机电池、手机壳、手机转接头等手机配件wordpress外贸网站模板。 毛巾WordPress外贸主题 毛巾、面巾、婴童毛巾、浴巾、方巾、…

【深度学习】【NLP】Bert理论,代码

论文 : https://arxiv.org/abs/1810.04805 文章目录 一、Bert理论BERT 模型公式1. 输入表示 (Input Representation)2. 自注意力机制 (Self-Attention Mechanism)3. Transformer 层 (Transformer Layer) 二、便于理解Bert的代码1. 自注意力机制2. Transformer 层3. …

2024 AEE | 风丘科技将亮相日本爱知国际会展中心——共同创造!

2024年名古屋汽车工程博览会(Automotive Engineering Exposition 2024 NAGOYA)将于7月17-19日在日本爱知县国际展示场(Aichi Sky Expo)开展。本展会是专门为活跃在汽车行业的工程师和研究人员举办的汽车技术展览,汇聚了…

Python办公MySQL(一):安装MySQL以及Navicat可视化工具(附送Navicat到期解决方法)

目录 专栏导读1、下载 MySQL Community Server2、安装3、安装Navicat4、连接刚刚安装的MySQL5、创建一个数据库方法1方法2 6、创建一张表方法1:准备一个test文件方法2: Navicat到期解决总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Pytho…

干货 | 2024元宇宙技术融合与新质生产力的创新实践(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT/WORD原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT/WORD解决方案!&#xff…

Craig Federighi 和 John Giannandrea 在 WWDC 上谈论苹果智能技术

WWDC 主题演讲结束后,苹果公司的克雷格-费德里吉(Craig Federighi)和约翰-吉安南德雷亚(John Giannandrea)坐下来,更深入地讨论了苹果智能公司在人工智能方面所做的努力,包括该公司是如何训练模…

三高系统的架构设计方案:高并发、高可用、高性能

文章目录 一、互联网系统三高概述1、互联网的三高2、高并发3、高可用4、高性能 二、高并发、高性能技术解决方案1、多高的并发才算高并发?2、水平扩展3、负载均衡思想4、缓存思想5、池化复用思想6、异步思想7、预处理-惰性更新思想8、分而治之思想 三、高可用技术解…

【OS】AUTOSAR OS调度器实现原理

目录 前言 正文 1.Scheduler逻辑原理概览 2.Scheduler配置 3.Scheduler具体实现原理 4.Scheduler初始化 5. Scheduler任务的插入 6.Scheduler任务的弹出 7.总结 前言 在<<【OS】AUTOSAR Os是如何启动第一个Task的>>一文中我们介绍了AUTOSAR Os是如何启动…

BCZYYb(钡铈锆钇镱)主要用作电解质 我国技术研究与生产步伐正在加快

BCZYYb&#xff08;钡铈锆钇镱&#xff09;主要用作电解质 我国技术研究与生产步伐正在加快 BCZYYb&#xff0c;钡铈锆钇镱氧化物&#xff0c;钙钛矿结构&#xff0c;外观为白色至浅黄色粉末状&#xff0c;主要用作电解质&#xff0c;功能是传输离子&#xff0c;具有化学稳定性…

硬核新品!M4E EDU民航考培一体无人机

天途上新啦&#xff01; 应我国民用无人机首项强制性国家标准《民用无人驾驶航空器系统安全要求》&#xff0c;天途对现有小型无人机训练机的飞控、电池、感知避障和电子围栏等软硬件全面升级设计&#xff0c;严格按国标GB42590-2023规范生产。 M4E EDU四轴多旋翼无人机是天途…

LabVIEW处理大量数据时,怎样确保数据的准确性和完整性?

在LabVIEW处理中&#xff0c;确保大量数据的准确性和完整性至关重要。以下是详细的多角度分析和建议&#xff0c;以确保在LabVIEW中处理大量数据时&#xff0c;数据的准确性和完整性&#xff1a; 1. 数据采集阶段 1.1 高精度硬件选择 选择高精度的数据采集硬件&#xff0c;如…

[数据集][目标检测]变电站火灾检测电力场景烟雾明火检测数据集VOC+YOLO格式140张2类别真实场景非PS合成

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;140 标注数量(xml文件个数)&#xff1a;140 标注数量(txt文件个数)&#xff1a;140 标注类别…

Hive的存储格式和压缩算法的特点和选择

1、数据存储格式&#xff1a; ①TEXTFILE HIVE 中默认的存储格式&#xff1b; 一般使用在数据贴源层(ODS 或 STG) &#xff0c;针对需要使用脚本 LOAD 加载数据到 HIVE 数仓表中的情况&#xff1b;需要把表里数据导出或直接可以查看等场景&#xff0c;作为BI供数 易读性…

服务部署:使用docker部署开源Xxl-Job任务调度平台项目

一、项目构建 1、从gitee上下载源码&#xff1a;xxl-job: 一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。https://gitee.com/xuxueli0323/xxl-job 2、本地使用…

适时示弱,才能在不动声色中自我沉淀,于韬光养晦中成就自己

适时示弱&#xff0c;才能在不动声色中自我沉淀&#xff0c;于韬光养晦中成就自己。 言语越怂的人格局越大你是否有过这样的经历&#xff0c;与路人因鸡毛蒜皮的小事起了争执&#xff0c;然后情绪失控大打出手。与家人因观点看法不同&#xff0c;最后争得面红耳赤&#xff0c;…