C++の関数では非常に深刻な問題が発生しています。これはC++は1つの関数を繰り返し呼び出しています
double** Fun1(unsigned l,unsigned n, vector<int>& list,
vector<string>& DataArray)
{
double** array2D = 0;
array2D = new double*[l];
string alphabet="ACGT";
for (int i = 0; i < l; i++)
{
array2D[i] = new double [4];
vector<double> count(4, 0.0);
for(int j=0;j<n;++j)
{
for(int k=0;k<4;k++)
{
if (toupper(DataArray[list[j]][i])==alphabet[k])
count[k]=count[k]+1;
}
}
for(int k=0;k<4;k++)
array2D[i][k]=count[k];
count.clear();
}
return array2D;
}
私の関数であり、Lの値は約100であり、n = 1であり、DataArrayサイズは(50000 X L)とリストは0から49999の間のいずれかの数を含むことになります。 今私はメインプログラムからこの関数を何度も呼び出しています(5千万回以上かかるかもしれません)。特定の回数までそれは非常に滑らかになりますが、2/3分後に私のシステムがハングアップします。私はこのコードに何が問題であるかを見つけることができません。私は記憶が不足していると思うのですが、なぜか分からないのですか?
'new'sがたくさんありますが、どこに' delete'sがありますか? – Mat
あなたは 'delete []'を使わないので。 –
メモリリーク(https://en.wikipedia.org/wiki/Memory_leak)がスラッシングにつながる(https://en.wikipedia.org/wiki/Thrashing_(computer_science)_ –