0
myObj* var = new myObj;
var = other1;

不再需要它

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

为什么不能取消引用而不是再次删除和分配?

var->other2;
4

3 回答 3

2

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

我建议您阅读一些有关 C++ 的教程,因为您似乎误解了很多词汇的实际含义。

记得使用谷歌。

于 2013-02-05T18:23:53.670 回答
0

你的问题很愚蠢,绝对没有冒犯的意思。换句话说,您在这里有一个潜在的困惑,无法通过简单的询问回答来解决。

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

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

快乐编码!

于 2013-02-05T18:19:19.520 回答
0

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

当你这样做时:

myObj* var = new myObj;
var = other1;

您正在创建内存泄漏new myObj为结构分配内存,并设置var指向那里。然后,当您重新分配var时,您不再有指向已分配结构的变量。C++ 没有自动垃圾回收,因此无法再访问此内存,但您也没有可delete用于回收它的变量。

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

*var = *other1;

当你这样做时:

delete var;

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

您肯定需要返回并查看所有关于 C++ 指针的教学材料。

于 2013-02-05T18:41:51.653 回答