簡體   English   中英

修改 C 中的結構時出現分段錯誤

[英]Segmentation fault when modifying struct in C

我正在為大學項目使用 C 開發客戶端/服務器聊天。

一切都很好,但我無法解決這個問題。

我創建了一個結構來存儲必須通信的兩個客戶端的 sockets:

typedef struct pairing_Clients{
  int client1fd;
  int client2fd;
} pairedClients;

當我在管理兩個客戶端之間的通信的 function 中使用它時,它給了我段錯誤。 我嘗試了以下幾行:

  • 將其聲明為全局變量:
pairedClients *clients;
  • 然后,這樣做會給我段錯誤:
void client_handler(void *p_client) {

  pairedClients *clients = (pairedClients *)malloc(sizeof(pairedClients));
  clients->client1fd = 15;
}

我覺得很奇怪。 我看不出有什么大問題。 有什么幫助嗎?

分配時,您正在創建一個新變量,並且全局clients未初始化。 由於上下文不清楚,我猜clients->client1fd = 15; 線與分配線不在同一個scope。

只需將malloc行更改為:

clients = (pairedClients *)malloc(sizeof(pairedClients));

您還應該檢查malloc的返回值。

暫無
暫無

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

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