一、定义

  1. 野指针(Wild Pointer):没有初始化的指针。
  2. 悬空指针(Dangling Pointer):指向的内存已经释放。

二、危害

由于指向的是不安全不可控的区域,任何情况都有可能发生,比如:崩溃、执行结果错误、系统崩溃等。

三、如何避免

传统方法:每一个指针必须初始化为 null,可以避免 野指针 的产生。但是对于悬空指针来说就比较难处理,只能每次 delete 内存之后将指针置为 null,但是其他指向该内存的指针如果有遗漏没有置为 null 的则很容易造成悬空指针。

现代 C++ 基本上没有了上述问题,使用容器 shared_ptr 。该容器初始化时就将指针置为了 null,这样就避免了野指针;传入内存地址之后,智能指针析构时判断该内存块的引用计数,如果为 0 则自动释放内存,因为不会有真正的裸指针在代码中,也就无从谈起悬空指针,所有对指针的操作都是对对象(容器)而非指针,这样就避免了悬空指针的存在。

(SAW:Game Over!)

C/Cpp / 野指针和悬空指针相关推荐

  1. C语言中“野指针”、“悬空指针”是什么?

    目录 1."野指针"(wild pointer) 2."悬空指针"(dangling pointer) 1."野指针"(wild point ...

  2. 野指针和悬空指针的形成原因和如何避免!

    野指针和悬空指针的形成原因和如何避免! 一:野指针 1.定义:野指针是那些未初始化的指针. 2.原因 (1)指针变量未初始化:任何指针变量刚被创建时不会自动成为NULL指针,所以,指针变量在创建的同时 ...

  3. 野指针 空指针 悬空指针 智能指针

    C语言中"野指针"."悬空指针"是什么? C语言中"野指针"."悬空指针"是什么?_不脱发的程序猿的博客-CSDN博客_ ...

  4. C/C++编程笔记:详解三种指针(悬空指针、空指针和野指针)

    悬空指针 指向已删除(或释放)的内存位置的指针称为悬空指针.指针用作悬空指针有三种不同的方式 ①内存分配: ②函数调用: 如果x是静态变量,则不会出现问题(或p不会悬空). 输出:5 变量超出范围 无 ...

  5. C++之深入解析野指针和悬空指针

    一.野指针 ① 什么是野指针? 野指针指向一个已删除的对象或未申请访问受限内存区域的指针. 与空指针不同,野指针无法通过简单地判断是否为NULL避免,而只能通过养成良好的编程习惯来尽力减少,对野指针进 ...

  6. “悬空指针”和“野指针”究竟是什么意思?有什么区别

    提起C语言大部分开发者很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再熬述了,今天我们想跟大家讲的是指针中的两个特有名词:"悬空指针"和"野指针&qu ...

  7. 空指针、悬空指针、野指针

    文章目录 前言 一.指针? 二.指针的应用场景 三. 空指针 四. 悬空指针 五. 野指针 正确用法 总结 前言 相信很多小伙伴对指针的使用都有一定的了解了.但更多的人可能对指针又爱又恨.这次我们谈点 ...

  8. C语言“悬空指针”和“野指针”究竟是什么意思?

    各位,提起C语言我们很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了,今天我们想跟大家讲的是指针中的两个特有名词:"悬空指针"和"野指针&quo ...

  9. C语言中的“悬空指针”和“野指针”是什么意思?

    提起C语言大部分开发者很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了,今天我们想跟大家讲的是指针中的两个特有名词:"悬空指针"和"野指针&qu ...

最新文章

  1. wxPython笔记
  2. C语言编码小球斜抛运动,利用C4droid绘制小球斜抛运动轨迹(考虑空气阻力)
  3. 70%的付费率 手游还在愁什么?
  4. arm linux考勤,定稿毕业论文_基于ARM与Linux的员工刷卡考勤系统喜欢就下吧(范文1)...
  5. 【python自动化办公04】word操作-word文字颜色修改
  6. Linux 文件系统在线扩容实战
  7. “云计算的前世今生·从阿里看云计算”内蒙古师范大学刘晨旭博士专题报告会顺利召开...
  8. 第512章 河系量子计算机,第512章、河系量子计算机
  9. centos7搭建apache服务器(亲测可用)
  10. python集群到hadoop_如何使用Hadoop流在本地Hadoop集群中运行MRJob?
  11. php 获取 uri,获取URI地址
  12. 我的程序员偶像在哪里?
  13. 3389远程连接问题的一个解决办法
  14. mysql数据库索引回表_简述 MySQL 数据库的覆盖索引与回表
  15. mysql之explain详解(分析索引的最佳使用)
  16. 百度地图KEY发布版SHA1和开发板SHA1如何获得
  17. UltraISO制作启动盘时报错:磁盘/映像容量太小
  18. Ubuntu 设置 samba共享文件夹
  19. 微信开发者工具公众号网页调试跨域问题的解决
  20. 干货 :六招教你用Python分分钟构建好玩的深度学习应用

热门文章

  1. CentOS Tomcat6 修改默认端口8080为80
  2. iOS 中正则表达式的使用
  3. Visual Studio 2008 每日提示(三十一)
  4. django 入门,快速搭建一个后端接口
  5. Kaggle狗的种类识别竞赛——基于Pytorch框架的迁移学习方法
  6. 【java实训课】工程项目文件(IDEA+MYSQL)
  7. linux命令--VI命令详解(三)
  8. Draft-微软出品的云原生下的本地开发辅助工具
  9. linux编译安装ansible 2.9.22
  10. hbase-admin:一款简陋的hbase数据查询工具(支持2.2.6)