2014-03-29 64 views
0

我已經爲線性反饋移位寄存器製作了這個難看的代碼。我對C++的瞭解有限。分段故障的原因在哪裏?C++ LFSR程序中的分段錯誤

operSeq = inpSeq; 
do { 
    for (unsigned int j=0; xorArray.size(); j=j+2) 
    { 
    bit[4] = operSeq[xorArray[j]]; 
    bit[4] = bit[4]^operSeq[xorArray[j+1]]; 
    } 
    operSeq >>= 1; 
    operSeq[4] = bit[4]; 
    keyRej.push_back(bit[4]); 
} 
while (turnSeq != inpSeq); 
for (unsigned int k = 0; k < keyRej.size(); k++) 
cout << keyRej[k]; 
} 
+0

你介意顯示'xorArray','operSeq','bit'等是什麼類型,我的水晶球目前正在修復中... –

+0

分割故障很難診斷(除了某些特殊情況如果沒有*完整的程序,我們可以爲自己編譯並觀看崩潰。你嘗試過'valgrind'嗎? – zwol

+0

我會嘗試發佈一個鏈接到我的代碼。 –

回答

4

你忘了比較jxorArray.size()位置:

for (unsigned int j=0; xorArray.size(); j=j+2) 

,結果你的週期是永遠不會結束,你讀超出數組邊界。

============================================== =============
另外這個週期可以無限地運行:

while (turnSeq != inpSeq); 

因爲循環條件沒有改變(除非你從另一個線程改變它);

+0

謝謝,該程序編譯正確,它是在我進行修復之前編譯的。但現在,而不是「分段故障」,我沒有輸出。我會嘗試發佈一個鏈接到我的代碼。 –

+1

@Mohamed請參閱我的補充內容。這可能會導致你的第二個問題。 –

+0

好吧,我終於有了什麼似乎是有效的輸出,即使它不是正確的想法。我在說'while(turnSeq!= inpSeq)'我應該說'while(operSeq!= inpSeq)'。現在我將檢查輸出是否正確。 –