在我的示例中,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);
来电。
我很困惑:)
答案 0 :(得分:2)
memcpy_s
会抛出异常。 sizeof(char)
是1.两者都验证指针不是NULL,所以你必须有一个。
答案 1 :(得分:0)
您看到的错误似乎是验证收到的目标指针不是null。你在使用它之前分配它吗?如你所示,你正在手动做?除此之外,您应该将目标缓冲区的大小作为第二个参数,并在第四个参数中指定要复制的字节数。它应该是这样的:
hookaddrinfoluacode=(char *)malloc(16384);
memcpy_s(hookaddrinfoluacode, 16384 * sizeof(char),this_token,strlen(this_token) );