我在Ubuntu 14.04上使用Clang 3.7.0玩Memory Sanitizer.以下代码可以完美地运行:
#includeint 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 santitizer文档中可以清楚地看出它只处理来自动态分配的内存的单元化内存读取.自动记忆不是消毒剂检查的一部分.