gpt4 book ai didi

C++ 重复调用一个函数系统挂起

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:48 24 4
gpt4 key购买 nike

我在使用 C++ 中的一个函数时遇到了非常严重的问题。这是我的功能

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 之间的任意一个数字。现在我从我的主程序中多次调用这个函数(可能超过 5000 万次)。最多一定次数它会非常顺利但是在大约 2/3 分钟后我的系统挂起。我找不到这段代码有什么问题。我想内存越来越短,但不知道为什么?

最佳答案

您的代码中缺少相应的 delete[]

请注意 [],这意味着您正在删除一个数组。如果您忘记添加这些,您将冒险进入未定义的领域(3.7.4.2 in N3797)。

您可能希望尝试使用 std::array 来减少 newdelete[] 的负担。此外,如果像您所说的那样调用它并且循环这么小,我会担心数据的一致性。

关于C++ 重复调用一个函数系统挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36708787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com