在 C 中取消引用 NULL 指针警告,即使它已经被分配

Dereferencing NULL pointer warning in C even it is assigned already

我正在尝试实现一个单元缓存结构并使用 calloc 方法(动态分配)为其提供内存 space。我使用 type-defined cache_unit 作为从 calloc 接收强制转换的 return 类型的指针类型。通常在 calloc 之后,分配区域中的所有位都应为 0。但是我的输出像随机数而不是 0,并且有两条警告消息。

这是我的代码:

#include<stdio.h>
#include<stdlib.h>
#include <cstdint>

int main() {
    typedef struct {
        bool enabled;
        uint8_t block[10];
        int access_time;
    } cache_unit;
    

    cache_unit* cache = (cache_unit*) calloc(2, sizeof(cache_unit));
    printf("%x ", *cache);

    return 0;
}

以下是 printf 上的警告消息:

对于 printf("%x ", *cache);"%x" 期望匹配 unsigned,而不是 cache_unit

尝试

printf("%d\n", cache->access_time);