我正在尝试跟踪特定的计数器,因为我经历了一系列循环。
基本上我正在循环一些输入文件,在此期间对每个文件进行一些计算。在文件循环之外,我已经声明了一个数组来跟踪一组特定的整数,这些整数对于第一个文件都是零,但随着连续文件的计算完成后也会被添加。当我尝试更新这个“跟踪器阵列”时,除了第一个文件runthrough之外,所有内容都会中断(每个文件有几个元素)。请参阅以下代码:
有问题的数组最初是在这里初始化的:
int* TempRowLength = new int[PrimeDatL];
for(int i=0;i<PrimeDatL;i++){
TempRowLength[i]=0;
}
并且segfault发生在以下部分中:
int tempArrayN;
cout<<"Begin pHi2 comp:"<<endl;
for(int j=0;j<PrimeDatL;j++){
int i=0;
tempArrayN=TempRowLength[j]+1;
cout<<tempArrayN<<endl;
while(i<PHLengths[n]) {
tempArray1[0][j]=PrimeDat1[j];
if(pHi1[0][i]==PrimeDat1[j]&&tempArrayN-1<PrimeDat2[j]) {
tempArray1[tempArrayN][j]=pHi1[1][i];
tempArrayN++;
}
i++;
}
TempRowLength[j]=TempRowLength[j]+tempArrayN;
}
当我包含最后一行时,我会增加TempRowLength的值,从而发生错误。如果此声明更早发生,则不会发生这种情况,但这会使其无效。此外,它只发生在'j'的几次迭代之后(j = 6导致错误)。
我有点不知所措,我已经宣布了阵列并将记忆留在了我需要它的地方,但显然我已经用指针在某处乱了。
所有帮助表示赞赏!
答案 0 :(得分:0)
听起来你某处有内存问题,可能是缓冲区溢出。最简单的选择可能是使用valgrind
来查明问题。