取消初始化变量的目的

时间:2016-08-03 00:11:58

标签: c

我遇到了一个函数示例如下:

int someFunction(void)
{
    int i;

    for(i = 0; i < 10; i++)
    {           
            a_var[i] = 0xFFFF; //uninitialize a_var
    }

    return 0;
}

取消初始化变量的目的是什么,为什么必须使用0XFFFF?

2 个答案:

答案 0 :(得分:5)

代码不是取消初始化变量。代码只是将变量设置为值0XFFFF65535@user2357112

代码的作者可能正在使用此值(16位)来表示特殊的东西 - 但这是特定于应用程序的。在C. @And

中没有一般的非初始化变量

答案 1 :(得分:1)

正如其他人所说,没有&#34;取消初始化&#34;一个变量。该评论具有误导性。

作者可能的意思是:让我们将其设置为一个明显突出的值(例如在调试器中),并且不应该由正确运行的程序使用;相反,它意味着在适当的初始化发生时被覆盖。如果程序崩溃并且调试器显示值为0xFFFF,则表示变量未正确初始化(否则它将具有不同的值),然后您知道您的代码正在访问它错误的时间,在&#34;纠正&#34;初始化。或者,类似地,当变量不打算再次使用时,可能会调用此函数,并且看到该值表示该变量已在其预期的生命结束之后使用&#34;。

Visual Studio在调试C ++代码时应用了这种技术:变量全部使用特殊值自动初始化,选择易于查看和记忆。示例包括0xABABABAB0xABADCAFE0xDEADDEAD。您可以找到更多herehereWikipedia列表更长。

该程序的作者可能正在尝试复制它。更好的评论是:&#34;将a_var设置为已知的错误值,以帮助检测对其的不正确的早期/晚期访问&#34;。