首页 > 解决方案 > 此故障是由取消引用高值地址引起的

问题描述

所以我收到了这个错误: 错误

以下是我的代码段:

void virtual_info(void * heapstart) {

    printf("info is called with heapstart %p\n", heapstart);

    struct node *block = heapstart;

    printf("block memory: %zu block address: %p\n", block->memory, block);
    
    while(block){

        if(block->is_free == true){
            printf("free %zu\n", block->memory);
        }
        else if(block->is_free != true){
            printf("allocated %zu\n", block->memory);
        }

        if(block->leftChild != NULL){

            if(block->leftChild->is_free){                          //line 224
                printf("free %zu\n", block->leftChild->memory);
            }
            else if(block->leftChild->is_free != true){
                printf("allocated %zu\n", block->leftChild->memory);
            }

        }

        if(block->rightChild != NULL){

            if(block->rightChild->is_free){
                printf("free %zu\n", block->rightChild->memory);
            }
            else if(block->rightChild->is_free != true){
                printf("allocated %zu\n", block->rightChild->memory);
            }

        }

        block = block->leftChild;

    }

}

在错误消息中,它说第 224 行有问题。我查看了逻辑,但找不到任何东西。也许更好的程序员可以在这里帮助我?

标签: cerror-handlingaddress-sanitizer

解决方案


推荐阅读