[英]Issues with C pthreads and a malloc/seg fault error
我的C代碼有一些問題(這是該語言的新功能)。 我有以下代碼:..
RTSPClient *clientInfo = (RTSPClient*) malloc(sizeof(RTSPClient));
if (!clientInfo)
{
printf("There wasn't enough memory to fufill the connection.\n");
continue;
}
clientInfo->socket = new_fd;
pthread_create(&thread, NULL, handleClientConnection, (void *) clientInfo);
...
其中RTSPClient是以下內容
typedef struct {
int socket;
int session_id;
PlaybackTimer* playback_timer;
CvCapture* video;
} RTSPClient;
當我們嘗試訪問結構中的視頻字段時,我們遇到段錯誤。 顯然不是在正確分配內容,而是想知道如何解決此問題。 我是否需要在啟動線程之前為分配的clientInfo對象保留全局變量,還是需要靜態分配它?
任何幫助表示贊賞。
RTSPClient *clientInfo = (RTSPClient*) malloc(sizeof(RTSPClient));
僅為clientInfo
結構創建內存。 您還需要為CvCapture* video;
分配內存CvCapture* video;
和所有其他指針。 (如果這樣做,請顯示更多代碼如何使用分配的結構)。
並且確定要在內存分配失敗的情況下continue
嗎? 我認為,如果沒有足夠的內存,您應該中止您的應用程序...否則將無法正常工作。
(而且您不需要在C應用程序中malloc
的返回值)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.