在 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);
我正在尝试实现一个单元缓存结构并使用 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);