我们有一个带有 3 个静态变量的函数。这很奇怪,但我们有时会看到 3 个静态变量之一正在重新初始化:
static uchar * Foo( uchar c_par1, uchar c_par2, uchar c_par3 )
{
static char s_var1[10];
static uchar c_var2 = 0;
static uchar c_var3 = 0;
.....
return s_var1;
}
在上述情况下, c_var2 有时会重新初始化。
我们确信它已重新初始化,因为我们还打印了每个变量的内存位置,并且它永远不会改变。我们怀疑 s_var1 可能会覆盖 c_var2 但这两个变量的内存位置相距甚远。