段错误一般发生在递归导致的栈溢出或这数组溢出,还有就是if语句中可能出错,比如一个链表结构:
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};
在链表指针指向为空的时候,它就不可能存在val值,这时候,如果你的if中存在p->val就会出现段错误。
且看下面代码:
ListNode* deleteDuplication(ListNode* pHead)
{ListNode *pFront=NULL, *pBack=pHead, *pMiddle = NULL;while(pBack!=NULL){pMiddle = pBack;pBack=pBack->next;if(pBack!=NULL && pBack->val==pMiddle->val){while(pBack->val==pMiddle->val){ListNode *pTemp;pTemp = pBack;pBack = pBack->next;delete pTemp;}delete pMiddle;pMiddle = NULL;if(pFront!=NULL)