一本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;
 

相关文章:

  • 2021-11-22
  • 2021-06-10
  • 2022-12-23
  • 2022-12-23
  • 2021-05-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-13
  • 2022-12-23
  • 2022-01-28
  • 2021-08-08
  • 2022-12-23
相关资源
相似解决方案