c、分段错误

发布于 2024-11-28 15:59:33 字数 407 浏览 2 评论 0原文

谁能告诉我为什么这里出现分段错误?

   void *dispatcher_threadloop(void * queue){

//thread loop of the dispatch thread- pass the tast to one of worker thread
dispatch_queue_t *dQueue;

printf("message-boss1");
dQueue = (dispatch_queue_t *)queue;
if (dQueue->HEAD!=NULL){
    for(;;){
        sem_wait(dQueue->queue_thread_semaphore);
        //TODO
    }
}

printf("message-boss2");

}

Can anyone please tell me why I have segmentation fault here?

   void *dispatcher_threadloop(void * queue){

//thread loop of the dispatch thread- pass the tast to one of worker thread
dispatch_queue_t *dQueue;

printf("message-boss1");
dQueue = (dispatch_queue_t *)queue;
if (dQueue->HEAD!=NULL){
    for(;;){
        sem_wait(dQueue->queue_thread_semaphore);
        //TODO
    }
}

printf("message-boss2");

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北方的巷 2024-12-05 15:59:33

queue 可能为 0 或指向内存中的某个无效位置。

如果您需要更多帮助,请参阅 http://sscce.org/

queue is probably 0 or points to some invalid location in memory.

If you want more help, see http://sscce.org/

痴者 2024-12-05 15:59:33

如果您不想检查 dQueue 是否为 null,或者如果 dQueue 为 null 永远不应该发生,请尝试断言

dispatch_queue_t *dQueue = queue;

assert(dQueue!=NULL)

另一方面,您可能应该发布queue 变量。

If you don't feel like checking dQueue against null, or if dQueue being null should never happen, try an assertion

dispatch_queue_t *dQueue = queue;

assert(dQueue!=NULL)

On the other hand, you should probably post the origin of the queue variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文