重複の可能性:
「new」を使用するとメモリリークが発生するのはなぜですか?
私はSTLにかなり慣れていないので、オブジェクトへのポインタのベクトルではなく、オブジェクトのベクトルを一般的に保持することをお勧めします。その信条に従おうとして、私は次のシナリオに遭遇しました。
//Approach A
//dynamically allocates mem for DD_DungeonRoom object, returns a pointer to the block.
//then, presumably, copy-constructs the de-referenced DD_DungeonRoom as a
//disparate DD_DungeonRoom object to be stored at the tail of the vector
//Probably causes memory leak due to the dynamically allocated mem block not being
//caught and explicitly deleted
mvLayoutArray.push_back(*(new DD_DungeonRoom()));
//Approach B
//same as A, but implemented in such a way that the dynamically allocated mem block
//tempRoom can be deleted after it is de-referenced and a disparate DD_DungeonRoom is
//copy-constructed into the vector
//obviously rather wasteful but should produce the vector of object values we want
DD_DungeonRoom* tempRoom = new DD_DungeonRoom();
mvLayoutArray.push_back(*(tempRoom));
delete tempRoom;
最初の質問:アプローチAでは、メモリリークが発生しますか?
2番目の質問:Aがメモリリークを生成すると仮定すると、Bはそれを解決しますか?3番目の質問:カスタムクラスオブジェクト(たとえば、「new」または「malloc」を介した動的割り当てが必要)を値によるベクトルに追加するためのより良い方法はありますか(または、より可能性が高いのは「何ですか」)?
ありがとう、CCJ