我正在使用优先级队列,但我似乎在(*ppFront)->pNext = NULL
处遇到了分段错误。在这种情况下,pNext
是队列的前端,pPrev
指向列表的其余部分。我不知道如果(*ppFront)->pNext
始终为NULL作为列表的前面,这可能是一个错误。
WaitlistEntry dequeue( PQNode** ppFront ){
WaitlistEntry ret;
if(*ppFront == NULL)
return;
PQNode *temp = *ppFront;
ret.iPriority = (*ppFront)->info.iPriority;
ret.iStudentID = (*ppFront)->info.iStudentID;
*ppFront = (*ppFront)->pPrev;
(*ppFront)->pNext = NULL;
free(temp);
return ret;
}
我有一个enqueue
方法,我单独测试,它创建实际的队列没有问题,但我在删除队列的前面时遇到问题。这是我的错误。
Invalid write of size 8
at 0x40134D: dequeue( enroll.c:317)
by 0x4011AA: dropStudent(enroll.c:251)
by 0x400D32: main (enroll:111)
address 0x8 is not stack'd, malloc'd or (recently) free'd
我用谷歌搜索了,我想我试图取消引用空指针(?)。