C++学习之指针的常见错误
来源:互联网 发布:路老膏方 网络网站 编辑:程序博客网 时间:2024/05/17 05:15
C++学习之指针的常见错误
我们在编程的过程中,有时候在使用指针的时候,删除一个指针以后一定要将这个指针设置为空指针,这是因为删除这个指针只是删除这个指针指向的地址,这个指针还真是的存在程序中,并且它仍然会指向原来的内存空间。这时候如果你忘记了这点而再次尝试使用这个指针的时候,那么将会导致程序出错。
这种错误非常难于调试,因为这种值得改变不太容易使人联想到时被删除的安格指针导致的错误,因此在删除一个指针以后,我们一定要将它赋值为空,虽然使用空指针的时候是违法的,容易使程序崩溃,但是,有时候我们宁愿让程序崩溃也不愿意调试这种难于觉察的错误。
这种隐藏的错误可以从下面这个例子中体现出来:
#include<iostream>
using namespace std;
int main()
{
int *p=new int;
*p=4;
cout<<"将4赋给p的地址以后,指针p读取的值:\t"<<*p<<endl;
delete p;
cout<<"删除P指向的空间以后,指针p读取的值为:\t\t"<<*p<<endl;
long *p1=new long;
cout<<'创建新空间以后,指针p1中保存的地址:\t"<<p1<<endl;
*p1=12423;
cout<<"指向新空间以后,指针P1中保存的地址为:"<<p1<<endl;
*p=23;
cout<<"将23赋给p的地址以后,指针p读取的值:\t"<<*p<<endl;
cout<<"将23赋给p的地址以后,指针p1读取的值:\t"<<*p1<<endl;
delete p1;
return 0;
}
运行这个程序,会发现指针p和p1读取的值都为23,由于编译器会默认将释放掉的内存空间回收然后分派给新开辟的空间,因此的10行新定义了指向新开辟的long型变量空间的指针p1以后,这个p1指针指向的空间实际上就是被释放的空间,也就是P原来指向的空间,这种错误非常之难调试,因为这种值的改变不容易令人联想到的是被删除的那个指针导致的错误,因此在删除一个指针以后,一定要将其赋值为空,虽然使用空指针是违法的,容易使程序奔崩溃,但是我们宁愿程序崩溃,也不愿意它调试起来很困难。
0 0
- C++学习之指针的常见错误
- C/C++常见指针错误
- c/c++指针常见错误
- 有关指针的心得之指针常见错误
- 有关指针的心得之指针常见错误
- C++ 指针的常见错误
- C参数指针-常见错误解析
- C语言指针使用中的常见错误
- C++学习总结_指针常见错误
- Golang学习之常见错误
- Android For JNI(三)——C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值
- Android For JNI(三)——C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值
- iOS学习(十三)Objective-C 常见的内存错误
- C 语言的各种变量的存储,指针的常见错误的总结
- 深入理解计算机系统学习笔记(三)之C语言常见的与存储器(内存)有关的错误
- 与指针相关的常见错误
- 指针作参数的常见错误
- C++指针(一) 常见的错误
- HDU Leftmost Digit(求n^n最高位的数字)
- input子系统学习(2)
- Java中类的初始化顺序
- 《一个操作系统的实现--第三章》段的查找
- Sphinx+Scws 搭建千万级准实时搜索&应用场景详解
- C++学习之指针的常见错误
- ImageView 从网络下载图片
- SQLite简单类库
- jstl 常用function
- Windows核心编程(二)字符和字符串处理
- java基础笔记
- SQL 2008 安装过程出现的问题
- 迟到的婚礼:一个关于快乐、忧伤、爱与被爱的故事
- 简单省事的图片特效