私のクラスでは、メンバー変数がありますstd::vector<node*> children
ポインタをベクトルのベクトルにpush_backするのはメモリリークですか?
次のクラスメンバー関数はメモリリークを作成しますか?
//adds a child node
{
node* child = new node("blah","blah","blah");
child->Set_Parent(this);
children.push_back(child); //<- Is this ok?
}
ベクトルは、ポインタのコピーを作成し、私は同じメモリ、 への2つのポインタを持っているし、元のポインタが右、スコープの外に出ますか?
これは単純明快かもしれませんが、私は私の前提を確認したいと思います。
ありがとう
['std :: shared_ptr'](http://en.cppreference.com/w/cpp/memory/shared_ptr)のようなスマートポインタを調べることをお勧めします。 –
@JoachimPileborg: 'std :: unique_ptr'(http://en.cppreference.com/w/cpp/memory/unique_ptr)を使用することもできます。これは、' std :: vector'が移動セマンティクスをサポートしているためです。 – bitmask
ノードが常に親を持つことになっている場合、ノードはコンストラクタの一部にすることができます。その後、あなたは 'children.push_back(新しいノード(" blah "、" blah "、" blah ")、this);' – dtech