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 に答える