过去,我们在 C 代码中遇到了一些未初始化数据的问题。我在下面的代码示例中尝试了两种不同的静态代码分析工具。他们都没有抱怨将指针传递给未初始化的数据。您是否知道任何可以捕获此问题的工具?
先感谢您!
static int useByVal(const int int_val)
{
return int_val + 1;
}
static void useByRef(int* const int_ptr)
{
if (int_ptr != (void*)0)
{
(*int_ptr)++;
}
}
int main(void)
{
int i;
int k;
/*** GOOD: The tool detects error: Using value of uninitialized automatic object 'i' */
i = useByVal(i);
/*** BAD: The tool does not catch uninitialized object 'k' when passed by reference */
useByRef(&k);
/*** BAD: Since call to 'useByRef(&k)', the tool now consider 'k' as initialized */
return i+k;
}