myObj* var = new myObj;
var = other1;
不再需要了
delete var;
var = new myObj;
var = other2;
为什么不能取消引用而不是再次删除和分配?
var->other2;
答案 0 :(得分:2)
答案 1 :(得分:0)
你的问题很愚蠢,绝对没有违法行为。换句话说,你在这里有一个潜在的困惑,这不能通过一个简单的答案来解决。
我强烈建议您阅读C或C ++的介绍性材料。网络充满了边缘,有优秀的讲座和免费的电子书。你不会后悔!
谷歌周围:)也许,你会在几天后回来回答你自己的问题。
快乐的编码!
答案 2 :(得分:0)
其他人评论了你对术语的困惑。我会评论你的代码。
当你这样做时:
myObj* var = new myObj;
var = other1;
您正在创建memory leak。 new myObj
为结构分配了内存,并将var
设置为指向那里。然后,当您重新分配var
时,您不再有指向已分配结构的变量。 C ++没有自动垃圾收集,因此不再可以访问此内存,但您也没有可以使用delete
来回收它的变量。
var = other1
重新指定指针,它不复制内容;如果你想复制结构,你必须写:
*var = *other1;
然后你这样做:
delete var;
您没有删除原始结构,而是删除指向的other
。仅当使用new
创建该结构时,此选项才有效。
您肯定需要返回并查看C ++中指针的所有教学材料。