0

好吧,这个我想不通。调试器没有提供有关此特定异常的太多信息。

这是被调用的函数:

NC_LIBEXPORT(VOID) ncKeyExpand(unsigned char* key, int initlen)
{
    int abspos = initlen;
    int curkpos = 0;
    do
    {
        key[abspos] = key[curkpos];
        ++abspos;
        ++curkpos;
        if(curkpos >= initlen)
            curkpos = 0;

    } while (curkpos < NC_KEY_MAX_LENGTH);
}

访问冲突发生在此处的第二行:

unsigned char apkey[NC_KEY_MAX_LENGTH];
ncKeyExpand(&apkey[0], NC_PRIV_KEY_LENGTH);

关于为什么会发生这种情况的任何见解?我没有做任何修复它。

测试 Application.exe 中 0x776e7094 处未处理的异常:0xC0000005:

那是确切的错误。

访问冲突。

当指针指向不可访问的地址时,例如它已被释放或超出范围,或者为空等,是否存在访问冲突?如果是这样,为什么在这里提出?char 数组就在那里

4

1 回答 1

1

您的数组以长度声明,NC_KEY_MAX_LENGTH这意味着您可以从apkey[0]thr'访问它的位置apkey[NC_KEY_MAX_LENGTH-1]

如果你看看你的功能

do
{
    key[abspos] = key[curkpos];
    ++abspos;

您正在访问超出您的数组大小..

于 2012-05-20T01:11:32.477 回答