以前我有代码可以创建一个字符串向量并通过以下方式添加一个元素:
std::vector<std::string> attempt_one;
attempt_one.emplace_back( "Hello, world!" );
此代码按预期编译和工作。如果我尝试将字符串向量创建为
std::vector<std::string> attempt_two{ "Hello, world!" };
代码编译得很好,但是在启用地址清理程序的情况下编译时,代码在运行时失败并出现错误:
Sanitizer CHECK failed: /...long_path.../asan_mapping.h:179 ((AddrIsInMem(p))) != (0) (0, 0)
我第二次尝试创建导致此错误的向量时的错误是什么?作为参考,这是启用了 -std=c++11 和地址清理程序的 Clang 3.7。