何时在C++中删除/取消引用

When to delete/dereference in C++

本文关键字:取消 引用 删除 C++ 何时      更新时间:2023-10-16
myObj* var = new myObj;
var = other1;

不再需要它了

delete var;
var = new myObj;
var = other2;

为什么不能取消引用而不是删除并重新分配?

var->other2;

取消引用并不意味着删除:http://en.wikipedia.org/wiki/Dereference

我建议你复习一些C++教程,因为你似乎对很多词汇的实际含义有误解。

记得使用谷歌。

你的问题很傻,绝对没有冒犯的意思。换句话说,你在这里有一个潜在的困惑,这是无法通过简单的调查答案来解决的。

我强烈建议你阅读C或C++的入门材料。网络上充斥着精彩的讲座和免费的电子书。你不会后悔的!

谷歌:(也许,几天后你会回来回答你自己的问题。

编码快乐!

其他人评论了您对术语的困惑。我会评论你的代码。

当你这样做:

myObj* var = new myObj;
var = other1;

你在制造内存泄漏。new myObj为一个结构分配了内存,并将var设置为指向那里。然后重新分配var时,将不再有指向已分配结构的变量。C++没有自动垃圾收集功能,因此此内存不再可访问,但您也没有可以与delete一起使用的变量来回收它。

var = other1重新分配指针,它不复制内容;如果你想复制结构,你必须写:

*var = *other1;

当你这样做时:

delete var;

您不是在删除原始结构,而是在删除other指向的任何结构。只有当该结构是使用new创建的时,这才有效。

你肯定需要回去复习所有关于C++指针的教学材料。