簡體   English   中英

我正在嘗試使用c和套接字創建一個簡單的聊天程序。 當我在幾件事之后運行它時,它說程序收到信號EXC_BAD_ACCESS

[英]I am trying to make a simple chat program with c and sockets. When I run it after a couple of things it says program received signal 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

strcat希望將可寫緩沖區作為其第一個參數。 您給它的是一個常量字符串,可能存儲在進程的只讀區域中的某個位置。 該函數嘗試在此常量字符串之后立即寫,這會導致內存訪問沖突。

EXC_BAD_ACCESS等同於分段錯誤,通常是NULL指針取消引用或訪問未分配給進程的內存。 如果recv_name太小而無法容納接收到的所有字節以及終止符'\\ 0',則可能導致這種情況。

要開始調試,請使用調試符號進行編譯,然后在該代碼中的各個點開始檢查recv_name的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM