一連のループを実行しながら、特定のカウンターを追跡しようとしています。
基本的に、いくつかの入力ファイルをループしていますが、その間に各ファイルでいくつかの計算が行われます。ファイル ループの外側で、特定の整数セットを追跡する配列を宣言しました。これらは最初のファイルではすべてゼロですが、後続のファイルで計算が行われると追加されます。この「トラッカー配列」を更新しようとすると、最初のファイル ランスルー以外のすべてで途中でセグメンテーション違反が発生します (各ファイルにいくつかの要素があります)。以下のコードを参照してください。
問題の配列は、もともとここで初期化されています。
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でエラーが発生します)。
私は少し途方に暮れています.配列を宣言し、必要な場所にメモリを確保しましたが、ポインタをどこかに偽装したことは明らかです.
すべての助けに感謝します!