下面的代码显示了一个糟糕的内存管理示例; item永远不会被取消分配,因为它会返回一个临时副本。
我一直在搜索和关闭编程论坛数周,但没有找到关于如何正确返回类型Item *的有效实例同时允许取消分配项目的明确解释。 换句话说,什么是替代此代码的更好的替代方法,它可以实现相同的返回值并允许项目取消分配?
Item* Inventory::add(const string& name)
{
Item* item = new Item(name);
...(some other code here)...
return item;
}
谢谢!
答案 0 :(得分:0)
一旦它越过循环,你可能会认为一切都被破坏了,但是返回的指针(和它指向的内存)将保留。它被传递给调用此方法的对象,并且没有内存泄漏。