0

一連のループを実行しながら、特定のカウンターを追跡しようとしています。

基本的に、いくつかの入力ファイルをループしていますが、その間に各ファイルでいくつかの計算が行われます。ファイル ループの外側で、特定の整数セットを追跡する配列を宣言しました。これらは最初のファイルではすべてゼロですが、後続のファイルで計算が行われると追加されます。この「トラッカー配列」を更新しようとすると、最初のファイル ランスルー以外のすべてで途中でセグメンテーション違反が発生します (各ファイルにいくつかの要素があります)。以下のコードを参照してください。

問題の配列は、もともとここで初期化されています。

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でエラーが発生します)。

私は少し途方に暮れています.配列を宣言し、必要な場所にメモリを確保しましたが、ポインタをどこかに偽装したことは明らかです.

すべての助けに感謝します!

4

1 に答える 1