C++ 访问冲突:指针错误

C++ 访问冲突:指针错误,c++,access-violation,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; i

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

下面是正在调用的函数:

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);
}
关于为什么会发生这种情况有什么见解吗?我所做的一切都是为了修复它

测试应用程序中0x776e7094处未处理的异常。exe:0xC0000005:

这就是确切的错误

访问冲突


当指针指向一个不可访问的地址时,比如它被释放或超出范围,或者为空等等,难道不存在访问冲突吗。?如果是,为什么会在这里提出?字符数组就在那里。

您的数组是用长度
NC\u KEY\u MAX\u length
声明的,这意味着您可以从
apkey[0]
thr'
apkey[NC\u KEY\u MAX\u length-1]访问它的位置。

如果你看看你的函数

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

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

NC_KEY_MAX_LENGTH和NC_PRIV_KEY_LENGTH的值是多少?+1。您可能可以通过使用
while
循环而不是
do
-
while
循环来修复它。很酷,修复了它。另外,我给它输入了一个
无符号字符*
字符串,它显然不喜欢这个字符串。。。
do
{
    key[abspos] = key[curkpos];
    ++abspos;