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

时间:2013-02-05 18:13:17

标签: c++ pointers dereference

myObj* var = new myObj;
var = other1;

不再需要了

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

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

var->other2;

3 个答案:

答案 0 :(得分:2)

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

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

请记住使用谷歌。

答案 1 :(得分:0)

你的问题很愚蠢,绝对没有违法行为。换句话说,你在这里有一个潜在的困惑,这不能通过一个简单的答案来解决。

我强烈建议您阅读C或C ++的介绍性材料。网络充满了边缘,有优秀的讲座和免费的电子书。你不会后悔!

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

快乐的编码!

答案 2 :(得分:0)

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

当你这样做时:

myObj* var = new myObj;
var = other1;

您正在创建memory leaknew myObj为结构分配了内存,并将var设置为指向那里。然后,当您重新分配var时,您不再有指向已分配结构的变量。 C ++没有自动垃圾收集,因此不再可以访问此内存,但您也没有可以使用delete来回收它的变量。

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

*var = *other1;

然后你这样做:

delete var;

您没有删除原始结构,而是删除指向的other。仅当使用new创建该结构时,此选项才有效。

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