如何避免返回临时对象(C ++)

时间:2013-06-12 03:55:52

标签: object memory-management return temporary

下面的代码显示了一个糟糕的内存管理示例; item永远不会被取消分配,因为它会返回一个临时副本。

我一直在搜索和关闭编程论坛数周,但没有找到关于如何正确返回类型Item *的有效实例同时允许取消分配项目的明确解释。 换句话说,什么是替代此代码的更好的替代方法,它可以实现相同的返回值并允许项目取消分配?

Item* Inventory::add(const string& name)
{ 
    Item* item = new Item(name);
    ...(some other code here)...
    return item;
}

谢谢!

1 个答案:

答案 0 :(得分:0)

一旦它越过循环,你可能会认为一切都被破坏了,但是返回的指针(和它指向的内存)将保留。它被传递给调用此方法的对象,并且没有内存泄漏。