首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

动态创建的数组,在释放时出错了,咋回事?大侠帮忙看看

2012-03-18 
动态创建的数组,在释放时出错了,怎么回事?大侠帮忙看看//generateFatureN:generateaFaturesequenceoflengt

动态创建的数组,在释放时出错了,怎么回事?大侠帮忙看看
//   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;//这里又要返回

是不是有问题呢?

热点排行