在VC++中确定未初始化的变量

Abh*_*jit 5 c++ code-analysis initialization visual-c++ visual-studio-2012

我有这段代码,

#include <iostream>

void foo(int *a)
{
    std::cout<<*a<<std::endl;
}

int main()
{
    int i;
    foo(&i);
}
Run Code Online (Sandbox Code Playgroud)

很明显,正在使用未初始化的变量.

我已经尝试/ RTCu以及依赖于错误C4700,但对于上面的代码,编译器没有将此标记为错误.

我也试过运行代码分析,它报告为代码片段没有问题.

那么在我们的源代码中确定未初始化变量的可靠方法是什么?

我知道valgrind这里有一个很棒的工作,但它不是我的选择,因为我有很多调用Windows API和MFC.

zen*_*nix 1

编译器没有可靠的方法来确定所有未初始化变量的情况。Valgrind(以及其他类似的工具)不是编译器,而是动态分析工具,就像上面用户gx所说的那样。还有一些静态分析工具可以检测许多使用统一变量的情况。但一般来说,编译器无法与那些专用工具相媲美。