我的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;当我们试图访问结构中的视频字段时,我们得到的是seg故障。显然没有正确分配东西,而是想知道我们如何解决这个问题。是否需要在线程启动之前将全局变量保留给分配给clientInfo对象的全局变量,还是需要静态地分配它?
任何帮助都是非常感谢的。
发布于 2014-04-05 19:39:14
RTSPClient *clientInfo = (RTSPClient*) malloc(sizeof(RTSPClient));只为clientInfo结构创建内存。您还需要为CvCapture* video;和所有其他指针分配内存。(如果需要,请展示更多代码如何使用分配的结构)。
您确定您的意思是continue,以防内存分配失败?我认为如果内存不足,你应该中止你的应用程序.否则什么都不会起作用。
(您不需要在C应用程序中转换malloc的返回值)
https://stackoverflow.com/questions/22885730
复制相似问题