在我的示例中,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);
调用获取的。
我很困惑:)
最佳答案
如果源不适合目标,
memcpy_s
会引发异常。 sizeof(char)
为 1。两者都验证指针不为 NULL,因此您必须有一个。
关于c - memcpy_s 和 strcpy_s 错误,但手动 for 循环有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10191981/