是`&variable = null;`可能吗?

Tim*_*ick -6 c++ syntax pointers

如果将指针设置为null,则删除该变量.它不能再使用了,它不再需要您的存储空间.指针的名称代表其值.它的价值永远&someVariable.我可以这样做:&someVariable = null;

[编辑]当我写这篇文章时,我对C++很陌生,所以我有多种误解.

要删除指针,您必须delete ptr;而不是通过将其设置为null ptr = nullptr;.

&someVariable 是一个右值,因此无法分配任何东西.

它是0,NULL或者nullptr不是null.

总而言之,你永远不应该delete &anything;,即使你很幸运,它也会编译.只需删除分配时获得的指针即可anything.

Jos*_*hua 7

不,你不能.&someVariable是一个左值.它无法分配,尝试也毫无意义.

而且,你想要做的事情的想法是毫无意义的.函数变量在堆栈上分配,仅在函数返回时释放.无法释放全局变量.如果堆不能以这种方式工作,则可能无法释放已分配结构中的变量.

变量不会被删除.这毫无意义.内存取消分配取决于它的分配方式:

  • 在堆栈上 - >函数返回
  • 分配new- > deleteauto_ptr其他智能指针(调用delete)
  • 分配malloc- >free
  • 全局变量 - >进程退出

  • @JamesRoot:结果我的意思是右值.:(现在进入细微的差异没有意义. (2认同)