我遇到了一个函数示例如下:
int someFunction(void)
{
int i;
for(i = 0; i < 10; i++)
{
a_var[i] = 0xFFFF; //uninitialize a_var
}
return 0;
}
取消初始化变量的目的是什么,为什么必须使用0XFFFF?
答案 0 :(得分:5)
代码不是取消初始化变量。代码只是将变量设置为值0XFFFF
或65535
。 @user2357112
代码的作者可能正在使用此值(16位)来表示特殊的东西 - 但这是特定于应用程序的。在C. @And
中没有一般的非初始化变量答案 1 :(得分:1)
正如其他人所说,没有&#34;取消初始化&#34;一个变量。该评论具有误导性。
作者可能的意思是:让我们将其设置为一个明显突出的值(例如在调试器中),并且不应该由正确运行的程序使用;相反,它意味着在适当的初始化发生时被覆盖。如果程序崩溃并且调试器显示值为0xFFFF
,则表示变量未正确初始化(否则它将具有不同的值),然后您知道您的代码正在访问它错误的时间,在&#34;纠正&#34;初始化。或者,类似地,当变量不打算再次使用时,可能会调用此函数,并且看到该值表示该变量已在其预期的生命结束之后使用&#34;。
Visual Studio在调试C ++代码时应用了这种技术:变量全部使用特殊值自动初始化,选择易于查看和记忆。示例包括0xABABABAB
,0xABADCAFE
和0xDEADDEAD
。您可以找到更多here和here。 Wikipedia列表更长。
该程序的作者可能正在尝试复制它。更好的评论是:&#34;将a_var
设置为已知的错误值,以帮助检测对其的不正确的早期/晚期访问&#34;。