指针类型学习总结--迷途指针
来源:互联网 发布:泗阳网络问政12345 编辑:程序博客网 时间:2024/05/21 18:48
December 4, 2015 2:28 PM
上一节总结了指针类型,对一些常见以及不常见的指针类型进行了区分,这一节,介绍一下迷途指针。
迷途指针又叫失控指针或悬浮指针,是当对一个指针被执行delete,这时会释放放它所指向的内存,但是你并没有把它设置成空时产生的,如果你没有重新赋值,就试图在进行使用此指针。如果是这样的,引发的后果将是不可想象的,也是不可预料的。
#include <iostream>using namespace std;int main(){ int* pInt = 0; pInt = new int; *pInt = 38; cout<<"*pInt = "<<*pInt<<endl; delete pInt;//pInt成为为一个迷途指针! long *pLong = new long; *pLong = 68; cout<<"*pLong = "<<*pLong<<endl; *pInt=20; //再次使用pInt! cout<<"*pInt = "<<*pInt<<endl; cout<<"*pLong = "<<*pLong<<endl; delete pLong; return 0;}
运行结果为:
*pInt = 38*pLong = 68*pInt = 20*pLong = 20
可见,尽管使用delete将pInt指针删除,并重新声明一个新的指针pLong,但是它们都指向一个相同的地址,即pInt仍然指向这块内存区域。程序把68赋值给pLong后,,当把20赋值给迷途指针pInt时,也就是把20赋值给pInt所指向的内存区域,也是pLong所指向的内存。因此,打印的结果变成了20。
通常,如果在删除一个指针后又把它删除一次,程序就会变得非常不稳定,任何情况都有可能发生。但是如果你只是删除了一个空指针,则什么事情都不会发生,这样做非常安全。所以,大部分情况下,我们应该把迷途指针该为空指针,即:pInt = NULL或者pInt = 0;
尽管使用迷途指针或空指针是非法的,也容易引起程序崩溃,但是空指针导致的程序崩溃是一种可预料的崩溃,这样调试起来就方便得多。
上一节 指针类型学习总结(函数指针、数组指针和指针数组)
2 0
- 指针类型学习总结--迷途指针
- 迷途指针
- 迷途指针
- 迷途指针
- 迷途指针
- 迷途指针
- 迷途指针
- 迷途指针
- 迷途指针
- 迷途指针
- 指针类型学习总结-- this指针
- C/C++学习笔记20:迷途指针
- 空指针与迷途指针
- 空指针与迷途指针
- 迷途指针与野指针
- 空指针和迷途指针
- 迷途指针和空指针
- 迷途指针浅谈
- 金典之数组与字符串
- 《图像局部不变性特征与描述》阅读笔记(3)-- 点与边缘检测
- 转:Android中的复制粘贴
- 博君一笑:在ARC中如何强制释放某一个NSObject?
- 揭秘 | 百万并发直播网站龙珠的性能秘籍
- 指针类型学习总结--迷途指针
- 【算法】递归(recursion)+经典例题个人分析
- online_judge_1014
- caffe的一些接口
- 去掉集合中重复元素
- 关于WIN64+QT4.8.4+VS2008配置
- 创业十年的感悟,创业者首先要让自己活下去
- android NFC 开发学习笔记(1)
- mysql匿名用户引起的Access denied