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