use*_*758 2 c linux memory memory-management
我使用'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;
};
Run Code Online (Sandbox Code Playgroud)
我发现的值raw_super始终为零,而价值ckpt是永远0x40000050.
我知道malloc()不会初始化分配的内存.所以分配的内存应该是随机值.但是每次运行程序时,值ckpt始终0x40000050并且不会改变.为什么?
把它想象成一个有趣的特点.
未初始化的变量(例如,为结构分配内存后的结构元素)可以取任何值.据说这样的价值是不确定的.C标准不要求以任何方式初始化它们.请注意,读取此类变量(除了a之外unsigned char)的行为未定义,因为未初始化的值可能是陷阱表示.