0

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

我已经断断续续地搜索编程论坛好几个星期了,但还没有找到关于如何正确返回类型 Item* 的有效实例同时允许解除分配项目的明确解释。换句话说,有什么比这个代码更好的替代方法来完成相同的返回值,但允许项目被取消分配?

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

谢谢!

4

1 回答 1

0

您可能认为一旦超出循环,所有内容都会被破坏,但返回的指针(以及它指向的内存)将保留。它被转移到调用该方法的对象中,并且没有内存泄漏。

于 2013-06-12T04:09:28.097 回答