当我运行一系列循环时,我试图跟踪一个特定的计数器。
本质上,我正在遍历一些输入文件,在此期间对每个文件进行一些计算。在文件循环之外,我声明了一个数组来跟踪一组特定的整数,这些整数对于第一个文件都是零,但是随着连续文件的计算完成,它们也会被添加。当我尝试更新这个“跟踪器数组”时,除了第一个文件运行之外,它会在中途出现段错误(每个文件有几个元素)。请参见下面的代码:
有问题的数组最初在这里初始化:
int* TempRowLength = new int[PrimeDatL];
for(int i=0;i<PrimeDatL;i++){
TempRowLength[i]=0;
}
并且段错误发生在以下部分:
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 导致错误)。
我有点不知所措,我已经声明了数组并在需要它的地方留出了内存,但很明显我的指针在某个地方出现了错误。
所有帮助表示赞赏!