2012-04-17 3 views
2

예에서 수동 복사가 작동하는 동안 strcpy_s 및 malloc_s가 오류를 발생시킵니다. 여기에 코드가 있습니다. 이 작품 :memcpy_s 및 strcpy_s 오류가 있지만 루프 수동 작동

hookaddrinfoluacode=(char *)malloc(16384); 
// This works   
for(i=0;i<strlen(this_token);++i){ 
    hookaddrinfoluacode[i]=this_token[i]; 
}      
hookaddrinfoluacode[i+1]='\0'; 

memcpy_s(hookaddrinfoluacode,sizeof(char),this_token,strlen(this_token)); 

을하지하지 않고, 어느 쪽도이 작업을 수행 :

오류가 표준 라이브러리에서이 코드 라인에서 던진 것으로 보인다
strcpy_s(hookaddrinfoluacode,strlen(this_token),this_token); 

:

_VALIDATE_RETURN_ERRCODE(dst != NULL, EINVAL); 

this_token is o 전화 번호는 this_token=strtok_s(NULL,":",&next_token);입니다.

나는 소스가 목적지에 맞지 않을 경우

+0

표준 라이브러리 기능이 제대로 작동합니까? –

+0

[Obi-Wan] (http://catb.org/jargon/html/O/obi-wan-error.html)이 있습니다. – unwind

+0

오류가 발생하는 코드에서 목적지 포인터가 어떤 식 으로든 null이되는 것 같습니까? –

답변

2

memcpy_s에서 예외가 발생합니다 :) 혼란 스러워요. sizeof(char)은 1입니다. 둘 다 유효성 검사 포인터가 NULL이 아니므로 포인터가 있어야합니다.

0

수신 한 대상 포인터가 null이 아닌지 확인한 것 같습니다. 그것을 사용하기 전에 할당하고 있습니까? 당신이 수동으로하고 있다는 것을 보여줬습니까? 그 외에도 두 번째 매개 변수로 대상 버퍼의 크기와 네 번째 매개 변수에서 복사 할 바이트 수를 지정해야합니다. 다음과 같아야합니다.

hookaddrinfoluacode=(char *)malloc(16384); 
memcpy_s(hookaddrinfoluacode, 16384 * sizeof(char),this_token,strlen(this_token));