当前位置:  开发笔记 > 编程语言 > 正文

malloc()分配的数据不为零

如何解决《malloc()分配的数据不为零》经验,为你挑选了2个好方法。

我使用'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并且不会改变.为什么?



1> 小智..:

分配的内存可以在分配后存储任何值,但它不必是随机的 - 分配根本不是随机生成器.



2> Bathsheba..:

把它想象成一个有趣的特点.

未初始化的变量(例如,为结构分配内存后的结构元素)可以取任何值.据说这样的价值是不确定的.C标准不要求以任何方式初始化它们.请注意,读取此类变量(除了a之外unsigned char)的行为未定义,因为未初始化的值可能是陷阱表示.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有