VS2010のDebug_VLDは、クラスメンバーの作成/初期化/削除に起因するいくつかのメモリリークを明らかにします。
my_member
タイプdouble*のデータメンバーです。コンストラクターでは、
my_member = NULL ;
次に、いくつかの方法で、メモリをに割り当てる必要がありますmy_member
。配列のサイズがまだわからないため、コンストラクターでこれを行うことはできません。また、メソッドの呼び出しごとにサイズが異なる場合があります。このメソッドで私が行うことは、メンバーがNULLであるかどうかをチェックすることです。もしそうなら、私はそれにスペースを割り当てます、そうでなければ、私は配列を操作することができます(accesor []でその要素の値を変更します)。のように見えます
void MyClass::my_method()
{
if( my_member == NULL )
my_member = new double[n_dim] ;
for(int k = 0 ; k < n_dim ; k++ )
my_member[k] = k ;
}
ラインでメモリリークが発生しますmy_member = new double[n_dim] ;
。
デストラクタでは、私は持っています
delete[] my_member ;
なにが問題ですか?割り当てを適切に行う方法は?
ありがとう!