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我意识到我总是假设队列有多个元素。我没有考虑检查你的情况下,只有一个元素在队列中。我试图取消对空指针的引用。