好吧,我无法想出这个。调试器没有提供有关此特定异常的大量信息。
这是被调用的函数:
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数组就在那里。
答案 0 :(得分:1)
您的数组的长度为NC_KEY_MAX_LENGTH
,这意味着您可以从apkey[0]
thr'apkey[NC_KEY_MAX_LENGTH-1]
访问它的位置。
如果你看看你的功能
do
{
key[abspos] = key[curkpos];
++abspos;
您正在访问超出数组大小的内容..