【发布时间】:2021-06-22 09:07:54
【问题描述】:
我想知道何时或是否必须删除此对象。 这是一个基本类 Object 的构造函数 对象.cpp:
Objects::Objects{
Obj one = new Obj;
Obj two = new Obj;
}
我知道在分配内存时你应该在某个时候删除它,但我已经在构造函数中分配了内存并且想再次使用变量一和二。我什么时候删除它们?
【问题讨论】:
-
通常你会在相应的析构函数中删除它们(在本例中为
~Objects。) -
那些是本地对象,因此你应该在离开构造函数之前删除它们,否则对它们的任何引用都会丢失并且你有泄漏。话虽如此,您很可能不需要任何指针,而且您肯定不需要使用
new(我想您实际上是想初始化成员,但这不是代码的作用,请澄清) -
也许您不想使用原始指针,而是想要 std::unique_ptr
。另外你确定要在构造函数中创建本地对象吗? -
Obj one = new Obj;将是一个错误。one不是指针。也许你想要Obj one;,但我质疑你为什么要创建在构造函数完成后不存在的本地对象。 -
试试这里的搜索引擎,你会发现很多关于指针的有用参考,stackoverflow.com/questions/tagged/pointers?tab=Votes和stackoverflow.com/questions/655065/…
标签: c++ pointers memory-management destructor rule-of-three