0

当我运行一系列循环时,我试图跟踪一个特定的计数器。

本质上,我正在遍历一些输入文件,在此期间对每个文件进行一些计算。在文件循环之外,我声明了一个数组来跟踪一组特定的整数,这些整数对于第一个文件都是零,但是随着连续文件的计算完成,它们也会被添加。当我尝试更新这个“跟踪器数组”时,除了第一个文件运行之外,它会在中途出现段错误(每个文件有几个元素)。请参见下面的代码:

有问题的数组最初在这里初始化:

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 导致错误)。

我有点不知所措,我已经声明了数组并在需要它的地方留出了内存,但很明显我的指针在某个地方出现了错误。

所有帮助表示赞赏!

4

1 回答 1

0

听起来您在某处有内存问题,可能是缓冲区溢出。最简单的选择可能是用于valgrind查明问题。

于 2013-09-15T11:40:51.033 回答