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

野指针bug

RunUnit *UnitList[10000];
void aaaa()
{
    //用cu接收
    RunUnit *cu = UnitList[Index];

    /*
        利用UnitList[Index]中的数据,借助用cu做一系列的动作
    */

    //UnitList[Index]中的数据之后在哪都不再使用,这里把它销毁
    delete cu;
    cu = nullptr;
}

void bbbb()
{
    if(UnitList[Index] == nullptr)
    {
        continue;
    }

    int c = 0;        //会走到这里
    UnitList[Index].index = 0;    //会出问题
}

解释:cu和UnitList[Index]都指向同一块地址,他们在栈上的不同位置;

delete cu; :将堆上的地址给清掉;

但cu和UnitList[Index]都还是有值的,只是指向的地址没有数据;所以下次去判断UnitList[Index] == nullptr不会通过,会继续往下,那利用到这块堆上的时候就有问题了;

RunUnit *UnitList[10000];
void aaaa()
{
    //用cu接收
    RunUnit *cu = UnitList[Index];

    /*
        利用UnitList[Index]中的数据,借助用cu做一系列的动作
    */

    //UnitList[Index]中的数据之后在哪都不再使用,这里把它销毁
    delete cu;
    UnitList[Index] = nullptr;   
}

void bbbb()
{
    if(UnitList[Index] == nullptr)
    {
        continue;
    }

    int c = 0;        //不会走到这里
    
    UnitList[Index].index = 0;    //不会出问题
}

原文地址:https://blog.csdn.net/qq_30263737/article/details/145050364
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/502533.html

相关文章:

  • LabVIEW实现油浸式变压器自主监测与实时报告
  • MySQL(七)MySQL和Oracle、PostgreSQL的区别
  • vue用户点进详情页再返回列表页,停留在原位置
  • idea上git log面板的使用
  • Android 高版本如何获取App安装列表?
  • 基于华为云车牌识别服务设计的停车场计费系统【华为开发者空间-鸿蒙】
  • 代码随想录day24 | leetcode 491.递增子序列 46.全排列 47.全排列 II
  • 【信息系统项目管理师】高分论文:论信息系统项目的采购管理(社会保险管理核心系统)
  • 第37周:咖啡豆识别 (Tensorflow实战第七周)
  • STL之VectorMapList针对erase方法踩坑笔记
  • iOS - Method Swizzling
  • 省市区三级联动(后端)
  • Java内存与缓存
  • Qt的.pro文件中宏的作用
  • 英伟达在CES 2025上的技术发布与采访综述
  • 【Qt笔记】QTextEdit和QPlainTextEdit 控件详解
  • Android车机DIY开发之软件篇(八)单独编译
  • 【机器视觉】OpenCV 图像轮廓(查找/绘制轮廓、轮廓面积/周长、多边形逼近与凸包、外接矩形)
  • 2. Scala 高阶语法之集合与元组
  • 网络原理(三)—— 传输层 之 UDP 和 TCP协议
  • win10 Outlook(new) 企业邮箱登录 登录失败。请在几分钟后重试。
  • Rust调用Windows API制作进程挂起工具
  • python bs4 selenium 查找a href=javascript:();的实际点击事件和url
  • 后端:Spring(IOC、AOP)
  • DHCP详解和部署
  • 电脑分辨率调到为多少最佳?电脑分辨率最佳设置