VS2010 中的 Debug_VLD 揭示了一些来自类成员创建/初始化/删除的内存泄漏。
my_member
是 double* 类型的数据成员。在构造函数中,我有
my_member = NULL ;
然后在某种方法中,我需要为my_member
. 我不能在构造函数中这样做,因为我还不知道数组的大小,和/或方法的不同调用的大小可能不同。我在这种方法中所做的是检查成员是否为 NULL。如果是,我为它分配空间,如果不是,我可以对数组进行操作(使用访问器 [] 更改其元素的值)。看起来像
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 ;
}
并且内存泄漏发生在 line my_member = new double[n_dim] ;
。
在析构函数中,我有
delete[] my_member ;
怎么了?如何正确分配?
谢谢!