记忆消毒剂

Ins*_*oop 5 c++ sanitizer msan

我在Ubuntu 14.04上使用Clang 3.7.0玩Memory Sanitizer.以下代码可以完美地运行:

#include <cstdio>

int main() {
  double ans;
  printf("Hello World: %f\n", ans);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译时

 clang++ -g -O1 -fsanitize=memory -fsanitize-memory-track-origins=2 -fomit-frame-pointer sanitize.cpp -o sanitize
Run Code Online (Sandbox Code Playgroud)

我期待一个错误.Memory Sanitizer没有捕获ans未初始化的事实吗?

谢谢你的帮助.

Ser*_*eyA 7

从clang santitizer文档中可以清楚地看出它只处理来自动态分配的内存的单元化内存读取.自动记忆不是消毒剂检查的一部分.