我正在尝试使用c和套接字创建一个简单的聊天程序。当我在几件事之后运行它时,程序收到信号EXC_BAD_ACCESS

时间:2011-09-01 19:03:55

标签: c sockets tcp client-server exc-bad-access

printf("what is your name?");
    gets(send_name);

    strcpy(send_name2, strcat("You are connected to ", send_name));
    send(connected, send_name2, strlen(send_name2), 0);

其他可执行文件未收到我发送的内容...

nbytes_recieved = recv(sock, recv_name, 50 ,0);
recv_name[nbytes_recieved] = '\0';

这是我在客户端代码中使用的代码,让它接收字符串。

谢谢, SIDD

2 个答案:

答案 0 :(得分:4)

strcat期望第一个参数是可写缓冲区。你给它的是一个常量字符串,可能存储在进程的只读区域中。该函数尝试在此常量字符串之后立即写入,这会导致内存访问冲突。

答案 1 :(得分:2)

EXC_BAD_ACCESS等同于分段错误,通常是NULL指针取消引用,或访问未分配给进程的内存。如果recv_name太小而无法容纳收到的所有字节加上终止'\ 0',则可能会导致这种情况。

要开始调试,请使用调试符号进行编译,然后在该代码中的各个点开始检查recv_name的内容。