我正在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 检查的一部分。

10-08 11:58