【发布时间】:2011-10-04 10:36:02
【问题描述】:
我有一个小问题:
Foo *myFoo;
myFoo = new Foo(anotherFoo); // some deep copy of another object
myFoo = new Foo(yetAnotherFoo); // another deep copy of yet another object
这是内存泄漏吗?如果是,我该如何正确避免它?我的程序中的情况是,'myFoo' 是一个类成员,我想不时将它用作“唯一的”存储对象,以获取其他对象的深层副本(因为复制的对象已被修改之后,我需要初始对象以供以后比较)。
我尝试了一个简单的解决方法,例如:
// within a class method of the same class
if (myFoo!=NULL) delete myFoo;
myFoo = new Foo(fooToStore);
但是一旦调用析构函数,这会使我的程序崩溃。我不确定我的(非平凡的)析构函数是否有点错误(这里不讨论不同的问题),或者是否通常禁止通过类方法中的 delete 删除类成员对象。
非常感谢您的时间和帮助 - 非常感谢! 标记
【问题讨论】:
-
旁注:调用delete之前不需要检查myFoo是否为NULL,delete正确处理NULL值。
标签: c++ memory memory-leaks deep-copy