如果将指针设置为null,则删除该变量。它不能再被使用,它不再需要您的存储空间。
指针的名称代表其值。它的值始终为&someVariable
。
我可以这样做:&someVariable = null;
[编辑]当我写这篇文章时,我对C ++很陌生,所以我有多种误解。
要删除指针,您必须delete ptr;
而不是通过ptr = nullptr;
将其设置为空。
&someVariable
是左值,因此无法分配任何内容。
它是0
,NULL
或nullptr
,而不是null
。
总之,即使你很幸运并且编译,你也不应该delete &anything;
。只需删除分配anything
时获得的指针。
答案 0 :(得分:7)
不,你不能。 &someVariable
是一个右值。它无法分配,尝试也毫无意义。
此外,你想要做的事情的想法是毫无意义的。函数变量在堆栈上分配,仅在函数返回时释放。无法释放全局变量。如果堆不能以这种方式工作,则分配结构中的变量不可能被释放。
变量不会被删除。这毫无意义。内存取消分配取决于它的分配方式:
new
- > delete
或auto_ptr
或其他智能指针(调用delete
)malloc
- > free
答案 1 :(得分:2)
如果将指针设置为null,则删除该变量。
不,不是。
它不能再使用了,它不再需要您的存储。
事实并非如此。
我可以这样做:
&someVariable = null;
没有。即使你写了nullptr
而不是不存在的null
,即使你可以修改内置类型的右值,它也只会设置一些临时值的值指向nullptr
的指针。
修改指针对它过去指向的东西完全没有影响。
听起来你对delete
感到困惑,并将指针设置为null。