Seg Fault:我不明白为什么

时间:2015-04-24 17:12:24

标签: c segmentation-fault

当我尝试在两个不同的地方使用相同的功能时,我得到一个非常奇怪的分段错误错误。

printTVNode功能正常工作。 在主要:

printTVNode(headTVNode); /* Works fine here */

TVNodePointer headTopic = NULL;
TopicEmmissions(&headTopic,headTVNode,desiredTopic);

当我尝试在TopicEmmissions函数中使用printTVNode时,获取Seg Fault。

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*/
    ...

printTVNode功能:

void printTVNode(TVNodePointer headTVNode){
    TVNodePointer currentTVNode = headTVNode;

    while ( currentTVNode != NULL ){
        printEmmission(*(currentTVNode->anEmmission));

        currentTVNode = currentTVNode->next;
    }
}

1 个答案:

答案 0 :(得分:2)

问题似乎在以下几行:

uint8_t screenDescriptorPackedFieldByte = 0;

uint8_t globalColorTableFlag = 1;
uint8_t colorResolution = 010;
uint8_t screenDescriptorSortFlag = 0;
uint8_t sizeOfGlobalColorTable = 010;

screenDescriptorPackedFieldByte |= ((globalColorTableFlag & 0x1) << 7);
screenDescriptorPackedFieldByte |= ((colorResolution & 0x7) << 4);
screenDescriptorPackedFieldByte |= ((screenDescriptorSortFlag & 0x1) << 3);
screenDescriptorPackedFieldByte |= ((sizeOfGlobalColorTable & 0x7) << 0);

NSLog(@"0x%02X",screenDescriptorPackedFieldByte);

printEmmission(*(currentTVNode->anEmmission)); anEmmission的情况下,当您尝试取消引用它时,我认为您会遇到段错误。

在进行解除引用之前,请务必检查NULL是否为anEmmission