2011-08-10 180 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或指向內存中某個無效位置。

如果你想要更多的幫助,請參閱http://sscce.org/

2

如果你不喜歡檢查dQueue對空,或者如果dQueue被空絕不應該發生,儘量斷言

dispatch_queue_t *dQueue = queue; 

assert(dQueue!=NULL) 

另手,你應該發佈queue變量的原點。

+0

剛剛更新的問題:) – Leanne

+0

我會definetly與斷言然後。 – Tom

+0

嗯試過,但沒有工作.. – Leanne