2

私の例では、strcpy_sとmalloc_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はthis_token=strtok_s(NULL,":",&next_token);呼び出しから取得されます。

よくわかりません :)

4

2 に答える 2

2

memcpy_s throws an exception if the source won't fit in destination. sizeof(char) is 1. Both also validate pointers are not NULL, so you must have one.

于 2012-04-17T13:20:42.663 に答える
0

表示されるエラーは、受信した宛先ポインターが null ではないことを検証しているようです。使用する前に割り当てていますか?あなたが示したように、手動でやっていますか?それとは別に、宛先バッファーのサイズを 2 番目のパラメーターとして指定し、コピーするバイト数を 4 番目のパラメーターとして指定する必要があります。次のようになります。

hookaddrinfoluacode=(char *)malloc(16384);
memcpy_s(hookaddrinfoluacode, 16384 * sizeof(char),this_token,strlen(this_token) );
于 2012-04-17T13:26:31.287 に答える