2011-08-10 18 views
0

誰も私がここでセグメンテーションフォルトを持っている理由を教えてもらえますか?c、セグメンテーションフォールト

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

} 
+3

デバッガを試しましたか? –

答えて

5

queueは、おそらく0またはメモリ内の無効な場所を指しています。

あなたはより多くの助けが必要な場合は、ヌルに対してdQueueをチェックするような気がしない場合は、http://sscce.org/

2

を参照するか、dQueueされ、ヌルが発生してはならない場合は、他にアサーション

dispatch_queue_t *dQueue = queue; 

assert(dQueue!=NULL) 

を試してみてくださいおそらくqueue変数の起源を投稿するべきです。

+0

質問: – Leanne

+0

で更新されました。私は間違いなくそのアサーションに行きます。 – Tom

+0

Hmmは試しましたが、動作しませんでした.. – Leanne

関連する問題