访问冲突:指针错误

时间:2012-05-20 01:04:59

标签: c++ access-violation

好吧,我无法想出这个。调试器没有提供有关此特定异常的大量信息。

这是被调用的函数:

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);

有关为何发生这种情况的任何见解?我所做的就是解决它。

  

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

这是确切的错误。

  

访问违规。

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

1 个答案:

答案 0 :(得分:1)

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

如果你看看你的功能

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

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