C 中的空指针比较



我不知道为什么我不输入这个if statement,而(temp->next)->next是0。我也尝试过将(temp->next)->next铸造到(void*)但没有用!

    void Mem_Coalesce(){

    list_t* temp;
    temp = freep;
    if( free_node_count == 2){
        if( ((char*)temp + (temp->size) )  == (char*)(temp->next)){
                printf("Entered if loopn");
                        temp->size += (temp->next)->size;
                temp->next = NULL;
                free_node_count--;
        }

    }
    else {
         printf("n coalescing the case that free list has 3+ nodesn");
        while(temp->next != NULL  ){
            if( ((char*)temp + (temp->size)) == (char*)(temp->next)){
                    if( (temp->next)->next == NULL){
                        temp->size += (temp->next)->size;
                        temp->next = NULL; //seg fault happens here 
                                                break;

                    }else{
                    temp->size += (temp->next)->size;
                                        temp->next = (temp->next)->next;
                    ((temp->next)->next)->prev = temp;
                    }
                    free_node_count--;
            }
            temp=temp->next;
        }
    }

}

这是我收到的输出,它有一个 seg 错误:

Addr of temp->next is  7f4a836ae2e8
Addr of temp->next->next is  0
./cmd.sh: line 5: 31230 Segmentation fault      (core dumped) myprogram

我是否错误地将指针值与 NULL 进行了比较?

我认为问题源于没有break.temp->next=NULL之后没有break.现在它已修复。

相关内容

  • 没有找到相关文章

最新更新