C/C++学习笔记20:迷途指针
来源:互联网 发布:tf idf算法java实现 编辑:程序博客网 时间:2024/06/06 02:55
1:什么是迷途指针?
迷途指针也叫悬浮指针、失控指针,是当个对一个指针进行delete操作以后(这样可以释放它所指向的内存),而并没有把它设置为空指针时产生的。而后却没有重新赋值就试图再次使用该指针,引起的结果不可预料。
(关于new与delete的知识参考:http://blog.csdn.net/gzbaishabi/article/details/25976801)
总之:在删除指针后不小心再使用它,虽然这个指针仍然指向原来的内存区域,但是编译器已经把这块内存区域分配给了其他数据,再次使用这个指针,有可能会导致程序崩溃。更糟糕的是,程序可能表面上运行的很好,过不了几分钟就崩溃了。
因此要求:在删除一个指针以后,要把它设置为空指针(0)。
e.g.1分析下列代码有何错误?会造成什么原因?
type unsigned short int USHORT;#include <iostream>int main(){USHORT *pInt = new USHORT;*pInt = 10;cout << "*pInt:"<<*pInt << endl;delete pInt; //pInt是一个迷途指针pInt = 0; //将p指针设置为空指针
//delete pInt;//此时需要再次删除pIntlong * pLong = new long ;*pLong = 90000;cout << "*pLong:"<<*pLong <<endl;*pInt = 20;//把值20赋给pInt所指向的区域,但是pInt不指向任何有效空间cout << "*pInt:" <<*pInt << endl;cout << "*pLong:" <<*pLong << endl;return 0;}
2:迷途指针与空指针有什么区别?
当delete一个指针的时候,实际上是编译器释放内存,但指针本身依然存在,这时它就是一个迷途指针。
使用以下语句可以把一个迷途指针改为空指针:
MyPtr = 0;
0 0
- C/C++学习笔记20:迷途指针
- C语言迷途指针
- C迷途指针
- C迷途指针
- C 指针学习笔记
- C指针学习笔记
- C指针学习笔记
- c/c++ 基础(六)迷途指针定义
- c语言指针学习笔记
- C语言指针学习笔记
- 《C和指针》学习笔记
- C++primer 指针学习笔记
- C语言指针学习笔记
- 《C与指针》学习笔记
- <C 和指针>学习笔记
- 征服C指针学习笔记
- C语言指针学习笔记
- c语言学习笔记--指针
- 一种简单的封装VP8/VP9视频的容器:IVF格式
- MFC-串口编程简单示例
- 理解eclipse(java工程)的工作目录
- Axis2创建WebService实例
- rapidxml,一个快速的xml库
- C/C++学习笔记20:迷途指针
- 使用ValidForm进行表单验证,结合SpringMVC检验用户名是否存在
- spring mvc 通过redirect重定向防止刷新页面重复提交又能返回数据给前台页面
- 两个数据交换的几种解法
- 预装APK的方法介绍
- 解决“arcsde服务启动又停止的问题”
- 正确使用stl map的erase方法
- js模版引擎。
- hdoj 1229 还是A+B 水过~