我还没有长时间使用c ++,所以我还没有掌握它的复杂性。如果有人能解释下列情况的原因,我们将不胜感激。
AccessViolationException 尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
// C++ Code Snippet
// unsigned int xr, xl, P
// unsigned int F(unsigned int x)
// {
// ...
// return (unsigned int)...
// }
...
// why does this work, but for-loop does not?
xr ^= F(xl) ^ P[16];
xl ^= F(xr) ^ P[16 - 1];
xr ^= F(xl) ^ P[14];
xl ^= F(xr) ^ P[14 - 1];
xr ^= F(xl) ^ P[12];
xl ^= F(xr) ^ P[12 - 1];
xr ^= F(xl) ^ P[10];
xl ^= F(xr) ^ P[10 - 1];
xr ^= F(xl) ^ P[8];
xl ^= F(xr) ^ P[8 - 1];
xr ^= F(xl) ^ P[6];
xl ^= F(xr) ^ P[6 - 1];
xr ^= F(xl) ^ P[4];
xl ^= F(xr) ^ P[4 - 1];
xr ^= F(xl) ^ P[2];
xl ^= F(xr) ^ P[2 - 1];
/* AccessViolationException
for (int i = 16; i > 0; i -= 2)
{
xr ^= F(xl) ^ P[i];
xl ^= F(xr) ^ P[i - 1];
}
*/
...
仅供参考,这是从.c#。
加载的.dll