【问题标题】:Default value for char?char的默认值?
【发布时间】:2015-02-20 01:04:52
【问题描述】:

在 C 语言中,当我们将变量声明为 int 时,它会分配内存空间并存储垃圾值。直到,我们给出输入..

类似的方式,字符将存储为默认值..

当我在代码块中使用调试功能时。它将分配类似 0'\000' 的内容。这种表示有什么意义吗?

提前致谢

【问题讨论】:

  • 看起来像十进制值以及 char 的八进制转义语法(均为 0)。
  • 使用 MSVC 在为调试模式编译时,某些填充值将用于未初始化的内存,具体取决于内存的分配或释放方式:stackoverflow.com/questions/370195/… 这在调试与初始化或相关的问题时会有很大帮助对象生命周期。

标签: c types char int garbage


【解决方案1】:

垃圾值可以是 8 位的任意组合,0000 00001111 1111。没有“标准垃圾值”,它是在传递给变量之前该内存区域中的任何内容。

【讨论】:

  • 特别是,不能保证它总是为零,即使在调试器中运行它时通常结果是这样。
  • 事实上我很少得到零初始化的局部变量。我不知道,我可能是一个重度 RAM 用户。
  • 操作系统内核在第一次分配给进程时通常会将内存页归零,因此它无法读取其他进程留下的(可能是私有的)数据。因此,您的程序第一次使用其地址空间的特定页面时,它很可能(但不保证)为零。
【解决方案2】:

垃圾没有默认值,它只是具有与上次设置的内存字节相同的值。但是,如果您使用 calloc 函数分配变量,它会将分配的内存部分设置为零。

【讨论】:

    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2016-06-07
    • 1970-01-01
    • 2015-01-31
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多