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