使用UnmanagedC ++ DLL的AccessViolationException

时间:2014-07-19 20:19:04

标签: c++ dll access-violation

我还没有长时间使用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

0 个答案:

没有答案