当我尝试在两个不同的地方使用相同的函数时,我遇到了一个非常奇怪的分段错误。
打印电视网络功能在主上工作正常。在主上:
printTVNode(headTVNode); /* Works fine here */
TVNodePointer headTopic = NULL;
TopicEmmissions(&headTopic,headTVNode,desiredTopic);
当我尝试在主题排放功能中使用printTVNode时,会得到Seg错误。
void TopicEmmissions(TVNodePointer * headTopic,TVNodePointer headTVNode,char * desiredTopic){
TVNodePointer currentTVNode = headTVNode;
EmmissionPointer currentEmmission;
EventPointer currentEvent;
EventPointer topicSubjects = NULL;
int flag,countEvent = 1,countEmmission = 1;
printTVNode(headTVNode); /* Get Segmentation Fault here*/
...
打印电视网络功能:
void printTVNode(TVNodePointer headTVNode){
TVNodePointer currentTVNode = headTVNode;
while ( currentTVNode != NULL ){
printEmmission(*(currentTVNode->anEmmission));
currentTVNode = currentTVNode->next;
}
}
问题似乎在以下行:
printEmmission(*(currentTVNode->anEmmission));
在anEmmission
NULL
的情况下,当您尝试取消引用它时,我认为您会得到段错误。
在执行取消引用之前,请确保检查anEmmission
是否未NULL
。