Ошибка нарушения доступа - PullRequest
0 голосов
/ 24 января 2012

Вот код:

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 ]

2 голосов
/ 24 января 2012

Узнайте, в какой строке происходит нарушение доступа - есть некоторые позиции, которые могут быть проблемой.Например: вы предполагаете, что Data всегда меньше 1000 символов - в противном случае вы вызываете переполнение буфера.Кроме того, вы всегда отправляете 1000 байтов - это действительно ваше намерение?

1 голос
/ 24 января 2012

Попробуйте вместо этого:

void SendRemoteData(string Data){
    send(tempclient, Data.c_str(), Data.size(),0);
}
0 голосов
/ 25 февраля 2012

Произошла проблема, потому что вы не можете использовать строку в memcpy, но вы используете Data.c_str(), что неверно и выдает ошибку.

Заклинание должно решить проблему:

memcpy(charout,(char *)Data.c_str(),Data.size());
...