좋아,이 하나 알아낼 수 없습니다. 디버거는이 예외에 대한 많은 정보를 제공하지 않습니다.액세스 위반 : 잘못된 포인터
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);
어떤 통찰력? 내가하는 일은 그것을 고치기위한 것이 아니다. 가 0xc0000005 : 시험의 application.exe에서 0x776e7094에서
처리되지 않은 예외 정확한 오류입니다
.
액세스 위반.
포인터가 비어 있거나 범위를 벗어나거나 null 등으로 액세스 할 수없는 주소를 가리키는 경우 액세스 위반이 발생하지 않습니까? 그렇다면 왜 여기에서 자랐습니까? char 배열은 바로 거기입니다.
NC_KEY_MAX_LENGTH 및 NC_PRIV_KEY_LENGTH의 값이 무엇입니까? –