9、什么是野指针?如何避免?【中高频】

news/2025/2/27 6:34:45

(1)什么是野指针

        野指针是 一种未被初始化的指针,通常会指向一个随机的内存地址。这个地址不可预测的,所以可能会导致 程序和数据出现错误

(2)在什么情况下会产生野指针?

  • 初始化指针时,没有将它置为nullptr,或一个有效的地址

  • 在释放内存后 没有置空指针使用delete 或 free 释放内存后,没有 将指针设置为nullptr,此时指针仍然指向 已释放的内存地址

  • 返回指向 局部变量 的指针。如果 函数返回了指向其 局部变量 的指针,当函数调用结束,这些 局部变量的生命周期 也就结束了,所以此时返回的指针就成了野指针

  • 指针越界访问,比如数据一工有10个元素,而指针却遍历到第10个元素之后的位置

    #include <stdio.h>
    int main()
    {
        int arr[10]={0];
        int* p=arr;
        for(int i=0;i<12;i++)
        {
            *p++=i;
        }
        return 0;
    }
  • 指针作为函数参数传递 或 作为返回值返回时,指针所指向的内存 在函数内部被释放了,此时 实参指针成了野指针

    在这里插入图片描述

(3)如何避免野指针

  • 初始化指针时,要将它置为nullptr或 一个有效地址

  • 在释放内存后 将指针置为 nullptr

  • 不要返回 指向局部变量的指针

  • 使用 智能指针,比如 unique_ptr、shared_ptr

  • 注意 函数参数的生命周期,避免 在函数内部释放 传递进来的指针所指向的内存


http://www.niftyadmin.cn/n/5869663.html

相关文章

【K8S】Kubernetes 基本架构、节点类型及运行流程详解(附架构图及流程图)

Kubernetes 架构 k8s 集群 多个 master node 多个 work nodeMaster 节点&#xff08;主节点&#xff09;&#xff1a;负责集群的管理任务&#xff0c;包括调度容器、维护集群状态、监控集群、管理服务发现等。Worker 节点&#xff08;工作节点&#xff09;&#xff1a;实际运…

使用ZFile打造属于自己的私有云系统结合内网穿透实现安全远程访问

文章目录 前言1.关于ZFile2.本地部署ZFile3.ZFile本地访问测试4.ZFile的配置5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定ZFile公网地址 前言 在数字化的今天&#xff0c;我们每个人都是信息的小能手。无论是职场高手、摄影达人还是学习狂人&#xff0c;每天都在创造…

Google sheet 复制excel内容自动合并单元格问题

解决路径&#xff1a;file-import-upload 这样上传本地的excel源文件&#xff0c;就没有这个问题了

自动化测试企业微信推送:群机器人(三)

前言&#xff1a;此文章主要讲解python通过群机器人发送文件 前置条件&#xff1a;群机器人已创建 代码逻辑&#xff1a; 1、通过企业微信的API文档&#xff0c;获取文件上传的media_id 2、获取到ID之后&#xff0c;发送群消息 代码&#xff1a; import os import time i…

《深度剖析:生成对抗网络中生成器与判别器的高效协作之道》

在人工智能的前沿领域&#xff0c;生成对抗网络&#xff08;GAN&#xff09;以其独特的对抗学习机制&#xff0c;为数据生成和处理带来了革命性的变革。生成器与判别器作为GAN的核心组件&#xff0c;它们之间的协作效率直接决定了GAN在图像生成、数据增强、风格迁移等众多应用中…

智绘教:Windows平台上的高效悬浮窗画笔工具深度解析

在Windows平台上,一款高效、实用的悬浮窗画笔工具对于提升工作效率和演示效果至关重要。今天,我要为大家介绍一款备受好评的悬浮窗画笔程序——智绘教。这款软件以其丰富的功能和便捷的操作,成为了众多用户心中的首选。接下来,让我们一起深入了解智绘教的各项特性。 一、体…

基于pytorch_bert的中文多标签分类运行bug笔记

基于pytorch_bert的中文多标签分类运行bug笔记 编码解释设置错误修改文件读取时的编码方式&#xff08;已解决&#xff09;下载装入Bert模型 项目地址&#xff1a;https://github.com/taishan1994/pytorch_bert_multi_classification/tree/main 编码解释设置错误 Traceback …

HarmonyOS NEXT 原生应用/元服务调试概述

一、概述 DevEco Studio提供了丰富的HarmonyOS应用/元服务调试能力&#xff0c;支持JS、ArkTS、C/C单语言调试和ArkTS/JSC/C跨语言调试能力&#xff0c;并且支持三方库源码调试&#xff0c;帮助开发者更方便、高效地调试应用/元服务。 HarmonyOS应用/元服务调试支持使用真机设备…