C++ 野指针和悬空指针
都是是指向无效内存区域(这里的无效指的是"不安全不可控")的指针,访问行为将会导致未定义行为。
野指针:指的是没有被初始化过的指针。
int main(void) { int * p;std::cout<<*p<<std::endl;return 0;
}
因此,为了防止出错,对于指针初始化时都是赋值为 nullptr,这样在使用时编译器就会直接报错,产生非法内存访问。
悬空指针:指针最初指向的内存已经被释放了的一种指针。
int main(void) { int * p = nullptr;int* p2 = new int; p = p2;delete p2;
}
此时 p和p2就是悬空指针,指向的内存已经被释放。继续使用这两个指针,行为不可预料。需要设置为p=p2=nullptr
。此时再使用,编译器会直接保错。
避免野指针比较简单,但悬空指针比较麻烦。c++引入了智能指针,C++智能指针的本质就是避免悬空指针的产生。
产生原因及解决办法:
野指针:指针变量未及时初始化 => 定义指针变量及时初始化,要么置空。
悬空指针:指针free或delete之后没有及时置空 => 释放操作后立即置空。
C++ 野指针和悬空指针相关推荐
- C语言中“野指针”、“悬空指针”是什么?
目录 1."野指针"(wild pointer) 2."悬空指针"(dangling pointer) 1."野指针"(wild point ...
- 野指针和悬空指针的形成原因和如何避免!
野指针和悬空指针的形成原因和如何避免! 一:野指针 1.定义:野指针是那些未初始化的指针. 2.原因 (1)指针变量未初始化:任何指针变量刚被创建时不会自动成为NULL指针,所以,指针变量在创建的同时 ...
- C/Cpp / 野指针和悬空指针
一.定义 野指针(Wild Pointer):没有初始化的指针. 悬空指针(Dangling Pointer):指向的内存已经释放. 二.危害 由于指向的是不安全不可控的区域,任何情况都有可能发生,比 ...
- 野指针 空指针 悬空指针 智能指针
C语言中"野指针"."悬空指针"是什么? C语言中"野指针"."悬空指针"是什么?_不脱发的程序猿的博客-CSDN博客_ ...
- C/C++编程笔记:详解三种指针(悬空指针、空指针和野指针)
悬空指针 指向已删除(或释放)的内存位置的指针称为悬空指针.指针用作悬空指针有三种不同的方式 ①内存分配: ②函数调用: 如果x是静态变量,则不会出现问题(或p不会悬空). 输出:5 变量超出范围 无 ...
- C++之深入解析野指针和悬空指针
一.野指针 ① 什么是野指针? 野指针指向一个已删除的对象或未申请访问受限内存区域的指针. 与空指针不同,野指针无法通过简单地判断是否为NULL避免,而只能通过养成良好的编程习惯来尽力减少,对野指针进 ...
- “悬空指针”和“野指针”究竟是什么意思?有什么区别
提起C语言大部分开发者很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再熬述了,今天我们想跟大家讲的是指针中的两个特有名词:"悬空指针"和"野指针&qu ...
- 空指针、悬空指针、野指针
文章目录 前言 一.指针? 二.指针的应用场景 三. 空指针 四. 悬空指针 五. 野指针 正确用法 总结 前言 相信很多小伙伴对指针的使用都有一定的了解了.但更多的人可能对指针又爱又恨.这次我们谈点 ...
- C语言“悬空指针”和“野指针”究竟是什么意思?
各位,提起C语言我们很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了,今天我们想跟大家讲的是指针中的两个特有名词:"悬空指针"和"野指针&quo ...
- C语言中的“悬空指针”和“野指针”是什么意思?
提起C语言大部分开发者很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了,今天我们想跟大家讲的是指针中的两个特有名词:"悬空指针"和"野指针&qu ...
最新文章
- 2022-2028年中国辉石行业市场全景调查及发展前景分析报告
- 实训C++语言设计——Date日期系统实现
- 2017南宁现场赛E 存档
- Unity3D学习笔记之二资源导入以及工程管理
- git checkout 和 git reset
- 标准WPS框架下的空间信息处理服务部署方法
- 4怎么打开项目_苹果电脑怎么把文件复制到u盘
- 基于springboot的物资管理系统
- FPGA学习经验分享——入门篇
- python实现触摸精灵功能_FRIDA脚本系列(三)超神篇:百度AI“调教”抖音AI
- 树莓派摄像头远程和本地观看视频
- P2627 [USACO11OPEN]Mowing the Lawn G 题解(单调队列+dp)
- utf8和gbk的区别
- Hypermesh二次开发系列003
- 内涵一下我参加过的那些竞赛。
- haproxy frontend 和backend
- 峰会•沙龙•招聘 | 记零数科技多线并进的一天
- VMware软件虚拟机不能全屏
- DBS3900组网方式学习
- deform服务器位置,Deform V11 自动多工步分析(MO)设置详解-工艺成型及仿真