delete后该指针还能使用么(转帖)
2009-10-11 20:01
351 查看
一本c++的书上说
"一旦用delete运算符释放了指针所指向的动态内存,就不能再对其赋值.例如:
float *p = new float;
...
delete p;
*p = 5; //p值未变,但p所指内存已被释放,再对p所指内存访问便不合法 "
但是我在dev c++还有vc2008上测试 ,都没有问题,也都能输出*p的值
这是为什么?
期待解答..
虽然内存被释放了,但指针指向的地址没有变化,这块内存也存在,有时候确实能继续操作,但是这个操作是非法的
野指针行为~~~
好的习惯是delete后,将指针赋空
float *p = new float;
...
delete p;
p=null;
"一旦用delete运算符释放了指针所指向的动态内存,就不能再对其赋值.例如:
float *p = new float;
...
delete p;
*p = 5; //p值未变,但p所指内存已被释放,再对p所指内存访问便不合法 "
但是我在dev c++还有vc2008上测试 ,都没有问题,也都能输出*p的值
这是为什么?
期待解答..
虽然内存被释放了,但指针指向的地址没有变化,这块内存也存在,有时候确实能继续操作,但是这个操作是非法的
野指针行为~~~
好的习惯是delete后,将指针赋空
float *p = new float;
...
delete p;
p=null;
相关文章推荐
- C++ 使用delete删除指针
- [转帖]MFC应用程序中指针的使用
- C++ 使用delete删除指针(2
- 若使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual
- 关于“为什么delete以后指针还能被赋值”一种描述
- C++ 使用delete删除指针(1
- C++ 使用delete删除指针
- 使用delete删除指针
- C++ 使用delete删除指针后应该做的工作
- 使用DEL_PTR代替delete来删除指针
- 对空指针使用delete是安全的
- C/C++ 使用delete删除指针需小心 “野指针”
- 条款7:当使用new得指针的容器时,记得在销毁容器前delete那些指针
- [每日练习]如何使用一个指针来实现双向链表操作
- C#高级编程七十五天----C#使用指针
- bash还能使用正则表达式,以前都没留意过,都是用外部程序 sed, grep来完成的
- 使用指针互换两个实参的值
- 第六章善于使用指针与引用
- 【转帖】使用python爬虫抓站的一些技巧总结:进阶篇
- 【ThinkingInC++】65、使用delete void*可能会出错