1つのスレッドでリンクリストにノードを追加しようとしていて、他のスレッドのリンクリストからノードを削除しようとしています。構造体をC言語のスレッド関数に渡す際に問題が発生する
if(time(NULL)== llnode-> time) 。私たちはリストの先頭ノードで時刻にアクセスしようとしています。関数に正しい引数を渡しているかどうかはわかりません。ノードを作成するスレッドは正しく動作していますが、ノードを削除するスレッドは正しく動作していません。それはセグメンテーションエラーを引き起こします。私がこれにしばらくこだわっていたので、誰かが正しい方向に向けることができれば、非常に感謝しています。 head
がNULL
としてオフ開始し、本質的に
void insert(struct node** head_ref, int new_room, time_t new_time);
void deleteNode(struct node** head_ref);
リストが空になったら、wakeThread()のllnodeがNULLになる可能性があります。残りのコードがあればそれは可能でしょうか?その場合は、NULLチェックを追加できます。 –
問題を正しく指し示すaixの回答に加えて、 'time(NULL)== llnode-> time'は非常に悪いことです。ネイティブのハードウェア、CPUのクロッキング、CPUの使用率、夏時間モード、および月の現在のフェーズによって異なります。代わりに '> ='を使用してください。 –