C++ C+中的分段错误+;LFSR程序

C++ C+中的分段错误+;LFSR程序,c++,segmentation-fault,C++,Segmentation Fault,我已经为一个线性反馈移位寄存器制作了这个丑陋的代码。我对C++的知识有限。分段故障的原因在哪里 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

我已经为一个线性反馈移位寄存器制作了这个丑陋的代码。我对C++的知识有限。分段故障的原因在哪里

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];
}
operSeq=inpSeq;
做{
for(无符号整数j=0;xorArray.size();j=j+2)
{
位[4]=操作序列[xorArray[j]];
位[4]=位[4]^operSeq[xorArray[j+1]];
}
operSeq>>=1;
operSeq[4]=位[4];
keyRej.推回(位[4]);
}
while(turnSeq!=inpSeq);
for(无符号整数k=0;k你忘了在这里比较
j
xorArray.size(
)了吗

因此,您的周期永远不会结束,您的读取超出了数组边界

===============================================================================
此外,该循环可以无限运行:

while (turnSeq != inpSeq);

因为循环条件从未更改(除非从另一个线程更改)

您忘了在此处将
j
xorArray.size(
)进行比较:

因此,您的周期永远不会结束,您的读取超出了数组边界

===============================================================================
此外,该循环可以无限运行:

while (turnSeq != inpSeq);

因为循环条件从未更改(除非从另一个线程更改)

请您展示一下什么类型的
xorArray
operSeq
bit
等等,我的水晶球目前正在维修中…如果没有一个我们可以自己编译并观看崩溃的完整程序,分段故障很难诊断(除非在某些特殊情况下不适用于此处)。您是否尝试过
valgrind
?我将尝试发布一个指向我的代码的链接。您是否介意显示什么类型的
xorArray
operSeq
bit
,等等,我的水晶球目前正在修复中…分段故障很难诊断(除非某些特殊情况不适用于此处)没有一个完整的程序,我们可以自己编译并观看崩溃。您是否尝试过
valgrind
?我将尝试发布一个指向我的代码的链接。谢谢,该程序已正确编译,它是在我进行修复之前编译的。但是现在我没有输出,而不是“分段错误”。我将尝试发布一个指向我的代码的链接。@Mohamed请查看我添加的内容。这可能会导致你的第二个问题。好的,我终于有了一个似乎是有效的输出,即使它不是正确的想法。我说的是‘While(turnSeq!=inpSeq)’我应该说‘While(operSeq!=inpSeq)’。现在我将检查输出是否正确。谢谢,程序编译正确,它是在我进行修复之前编译的。但是现在我没有输出,而不是“分段错误”。我将尝试发布一个指向我的代码的链接。@Mohamed请查看我添加的内容。这可能会导致你的第二个问题。好的,我终于有了一个似乎是有效的输出,即使它不是正确的想法。我说的是‘While(turnSeq!=inpSeq)’我应该说‘While(operSeq!=inpSeq)’。现在我将检查输出是否正确。