с, ошибка сегментации - PullRequest
       7

с, ошибка сегментации

0 голосов
/ 10 августа 2011

Может кто-нибудь сказать, почему у меня здесь ошибка сегментации?

   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");

}

Ответы [ 2 ]

5 голосов
/ 10 августа 2011

queue, вероятно, равно 0 или указывает на какое-то неверное место в памяти.

Если вам нужна дополнительная помощь, см. http://sscce.org/

2 голосов
/ 10 августа 2011

Если вы не хотите проверять dQueue на ноль, или если dQueue равным нулю, никогда не должно быть, попробуйте утверждение

dispatch_queue_t *dQueue = queue;

assert(dQueue!=NULL)

С другой стороны, вам, вероятно, следует опубликовать источник переменной queue.

...