我正在Ubuntu 14.04上使用带有Clang 3.7.0的Memory Sanitizer玩耍。以下代码可以正常运行:
#include <cstdio>
int main() {
double ans;
printf("Hello World: %f\n", ans);
return 0;
}
当编译时
clang++ -g -O1 -fsanitize=memory -fsanitize-memory-track-origins=2 -fomit-frame-pointer sanitize.cpp -o sanitize
我期待一个错误。 Memory Sanitizer不能捕获ans未初始化的事实吗?
谢谢你的帮助。
最佳答案
从clang sanitizer 程序文档中可以清楚地看出,它仅处理从动态分配的内存中读取的未初始化内存。自动内存不是 sanitizer 检查的一部分。