访问冲突错误

时间:2012-01-24 13:32:13

标签: c++ memory access-violation

以下是代码:

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);
}

当我尝试两次使用此功能时,我收到错误。我该怎么办?

3 个答案:

答案 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());