动态创建的数组,在释放时出错了,怎么回事?大侠帮忙看看
// generateFature N : generate a Fature sequence of length N
// [in] : long N : number of time steps
//: long M : number of simulations
// [out] : vector <double> X : the Fature sequence
inline vector <double> generateFature(long N, long M)
{
int p = generatePrime(N);
int l, q, k;
long v1, v2, v3;
long value = 0;
long a[250][250] = {0};
int m = (int)(log(M) / log(p));
if (m == 0)
{
m = 1;
}
double *ptr = new double[N]();
unsigned long fact = 0;
vector <double> X;
for (k = 1; k <= N; k++)// number of time steps
{
for (l = 0; l <= m; l++)
{
value = pow(p, l + 1);
a[0][l] = (int)((M % value) / p);
for (q = l; q <= m; q++)
{
v1 = factorial(q);
v2 = factorial(q - l);
v3 = factorial(l);
fact = v1 / (v2 * v3);
value = fact * a[k - 1][q] % p;
a[k][l] = a[k][l] + value;
}// end of for (q = l; q <= m; q++)
ptr[k] = ptr[k] + (double)(a[k][l] / pow(p, l + 1));
}// end of for (l = 0; l <= m; l++)
X.push_back(ptr[k]);
}// end of for (k = 1; k <= N; k++)
delete [] ptr;// run-time error here. why??
return X;
}
[解决办法]
X.push_back(ptr[k]);//这里是保存ptr指向的内存
delete [] ptr; //这里是释放内存
return X;//这里又要返回
是不是有问题呢?