以下是代码:
void SendRemoteData(string Data){
char charout[1000];
memset(charout,0,sizeof(charout));
memcpy(charout,Data.c_str(),Data.size());
send(tempclient, charout, sizeof(charout),0);
}
当我尝试两次使用此功能时,我收到错误。我该怎么办?
答案 0 :(得分:2)
发现访问违规发生在哪一行 - 有些职位可能存在问题。例如:您假设Data
总是小于1000个字符 - 否则会导致缓冲区溢出。此外,你总是发送1000个字节 - 这真的是你的意图吗?
答案 1 :(得分:1)
请改为尝试:
void SendRemoteData(string Data){
send(tempclient, Data.c_str(), Data.size(),0);
}
答案 2 :(得分:0)
问题发生了,因为你不能在memcpy中使用字符串,但是你使用Data.c_str()
,这是错误的并且给我一个错误。
演员应解决问题:
memcpy(charout,(char *)Data.c_str(),Data.size());