首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C线程和malloc/seg错误的问题

C线程和malloc/seg错误的问题
EN

Stack Overflow用户
提问于 2014-04-05 19:30:36
回答 1查看 192关注 0票数 0

我的C代码有一些问题(对这种语言有点陌生)。我有以下代码:.

代码语言:javascript
复制
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如下所示

代码语言:javascript
复制
typedef struct {
    int socket;
    int session_id;
    PlaybackTimer* playback_timer;
    CvCapture* video;
} RTSPClient;

当我们试图访问结构中的视频字段时,我们得到的是seg故障。显然没有正确分配东西,而是想知道我们如何解决这个问题。是否需要在线程启动之前将全局变量保留给分配给clientInfo对象的全局变量,还是需要静态地分配它?

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-05 19:39:14

RTSPClient *clientInfo = (RTSPClient*) malloc(sizeof(RTSPClient));只为clientInfo结构创建内存。您还需要为CvCapture* video;和所有其他指针分配内存。(如果需要,请展示更多代码如何使用分配的结构)。

您确定您的意思是continue,以防内存分配失败?我认为如果内存不足,你应该中止你的应用程序.否则什么都不会起作用。

(您不需要在C应用程序中转换malloc的返回值)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22885730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档