C 取消对空指针指向的元素的引用
我使用的是优先级队列,但我似乎在C 取消对空指针指向的元素的引用,c,pointers,null,segmentation-fault,dereference,C,Pointers,Null,Segmentation Fault,Dereference,我使用的是优先级队列,但我似乎在(*ppFront)->pNext=NULL处遇到了分段错误。在这种情况下,pNext是队列的前面,而pPrev指向列表的其余部分。如果(*ppFront)->pNext作为列表的前面总是空的,我不知道为什么这会是一个错误 WaitlistEntry dequeue( PQNode** ppFront ){ WaitlistEntry ret; if(*ppFront == NULL) return; PQNode *tem
(*ppFront)->pNext=NULL
处遇到了分段错误。在这种情况下,pNext
是队列的前面,而pPrev
指向列表的其余部分。如果(*ppFront)->pNext
作为列表的前面总是空的,我不知道为什么这会是一个错误
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
我在谷歌上搜索过,我想我正在尝试取消对空指针(?)的引用。
*ppFront=(*ppFront)->pPrev;(*ppFront)->pNext=NULL代码>-->*ppFront=(*ppFront)->pNext;如果(*ppFront)(*ppFront)->pPrev=NULL代码>?@BLUEPIXY我意识到我总是假设队列有多个元素。我没有考虑检查你的情况下,只有一个元素在队列中。我试图取消对空指针的引用。*ppFront=(*ppFront)->pPrev;(*ppFront)->pNext=NULL代码>-->*ppFront=(*ppFront)->pNext;如果(*ppFront)(*ppFront)->pPrev=NULL代码>?@BLUEPIXY我意识到我总是假设队列有多个元素。我没有考虑检查你的情况下,只有一个元素在队列中。我试图取消对空指针的引用。