2

ベクター内の動的に割り当てられたオブジェクトを別のオブジェクトに置き換えるかどうか疑問に思っています。オブジェクトは削除されますか、それとも自分で行う必要がありますか?

vector<thingamajig*> myvec;

... 

myvec[17] = new thingamajig(paramsA);

...

myvec[17] = new thingamajig(paramsB); //what happens to the previous thingamajig?

これはメモリリークですか?thingamajig(paramsA) を自動的に削除するかどうかを知るのに十分なベクトルを理解していません。そうでない場合、古いものをきれいにする適切な方法は何ですか?

4

1 に答える 1

1

前のことはどうなるamajig

前へのポインターを失ったmyvec[17]ため、メモリリークが発生します。

でスマートポインターを使用することをお勧めしますstd::vector

#include <memory>
#include <vector>
std::vector<std::unique_ptr<thingamajig>> myvec;

myvec[17].reset(new thingamajig(paramsB));
于 2013-10-06T05:15:51.427 に答える