【发布时间】:2018-07-20 05:40:26
【问题描述】:
我写了这篇文章,想知道为什么“已删除”没有显示为输出。
int *p=NULL;
p=new int(10);
cout<<*p<<endl;
delete p;
if(p==NULL)cout<<"deleted"<<endl;
有人可以解释为什么在使用 delete 后它不打印以及为什么 delete 不使指针为 NULL 吗?
【问题讨论】:
-
你有没有试过阅读
delete的文档 -
delete不是这样做的。 -
1) 显示的代码中没有引用。你
delete是一个指针,而不是一个引用。 2)delete不会改变p的值。它只是deletesp指向的内存。 -
查看delete expression 并尝试在调用后找到指针在
NULL的设置位置。 -
delete 不会将指针设置为 NULL,因为这样做会浪费 CPU 周期,因为无论如何指针都不会被再次读取。如果您希望将指针设置为 NULL,您可以自己显式地将其设置为 NULL,但由于在许多情况下您不会关心,C++ 不会强迫您为不需要的操作支付开销。