堆栈粉碎<unknown>中止(核心转储)错误

时间:2018-05-07 14:19:12

标签: c++ stack-smash

我一直致力于一个学校项目,我们已经分配了与2个客户端和一个服务器(TCP)进行轮盘游戏的任务。 所以我认为我为服务器和客户端制作了一个无效功能,以实现通信,但我遇到了这个错误,无法找到我弄乱的地方,如果有人知道的话,请让我知道! :)

客户端:

void bet(int client,const int size,char message[])
{
    char to_server[size];
    if (recv(client,message,size,0) < 0)
    {
        Receive_Error obj;
        throw obj;
    }
    std::cout << message << std::endl;
    std::cin >>to_server;
    if (send(client,to_server,sizeof(to_server),0) < 0)
    {
        Send_Error obj;
        throw obj;
    }
}

服务器:

void bet(int client,char message[],const int size)
{
    char to_client[size] = "Mire fogad ?\nColor[b/r] + Number [0-9] + Bet\n";
    if (send(client,to_client,sizeof(to_client),0) < 0)
    {
        Send_Error obj;
        throw obj;
    }
    if (recv(client,&message,size,0) < 0)
    {
        Receive_Error obj;
        throw obj;
    }
    std::cout << message ;

}

在双方中,&#34;消息&#34;变量看起来像这样:

char* message = new char[size];
for ( not important )
{
   bet(client_socket,message,size)
}
delete[] message;

size是一个const int,值为256; PS:我标记C和C ++的原因是因为要求使用C函数(包含在sys / socket.h,sys / types.h,netinet / in.h中)但我主要研究C ++,所以我正试图偷工减料。

1 个答案:

答案 0 :(得分:0)

好的,经过很长一段时间,即使是100太多的缓冲区,所以我把它降到了50.