我使用'malloc()'为C语言中的结构分配内存.部分结构如下:
struct f2fs_sb_info { struct f2fs_fsck *fsck; struct f2fs_super_block *raw_super; struct f2fs_nm_info *nm_info; struct f2fs_sm_info *sm_info; struct f2fs_checkpoint *ckpt; };
我发现的值raw_super
始终为零,而价值ckpt
是永远0x40000050
.
我知道malloc()
不会初始化分配的内存.所以分配的内存应该是随机值.但是每次运行程序时,值ckpt
始终0x40000050
并且不会改变.为什么?
分配的内存可以在分配后存储任何值,但它不必是随机的 - 分配根本不是随机生成器.
把它想象成一个有趣的特点.
未初始化的变量(例如,为结构分配内存后的结构元素)可以取任何值.据说这样的价值是不确定的.C标准不要求以任何方式初始化它们.请注意,读取此类变量(除了a之外unsigned char
)的行为未定义,因为未初始化的值可能是陷阱表示.