Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 性病媒人工中毒_C++_Address Sanitizer_Sanitizer - Fatal编程技术网

C++ 性病媒人工中毒

C++ 性病媒人工中毒,c++,address-sanitizer,sanitizer,C++,Address Sanitizer,Sanitizer,在下面的代码片段中,有一个错误并非微不足道,但我希望AddressSanitarizer之类的工具能够捕捉到它 #include <vector> #include <iostream> int main () { std::vector<int> toto; toto.push_back(2); int const& titi = toto[0]; toto.pop_back(); std::cout << titi <

在下面的代码片段中,有一个错误并非微不足道,但我希望AddressSanitarizer之类的工具能够捕捉到它

#include <vector>
#include <iostream>

int main ()
{
 std::vector<int> toto;
 toto.push_back(2);
 int const& titi = toto[0];
 toto.pop_back();
 std::cout << titi << std::endl;
 return 1;
}
#包括
#包括
int main()
{
std::向量toto;
toto.推回(2);
int const&titi=toto[0];
toto.pop_back();

std::cout这已经在Clang(libc++)和相对较新的GNU(libstdc++)stl中实现(有关详细信息,请参阅)


此功能的一个问题是,它破坏了单独的清理功能,即仅清理应用程序的一部分(例如,仅可执行文件而非LIB)。问题是,如果未初始化的向量被推入并在净化代码中弹出,则推送程序将不会意识到需要解除缓冲区的锁定。因此,在GCC中默认情况下禁用它(定义
\u GLIBCXX\u SANITIZE\u vector
以启用它),由于不清楚的原因,Clang仍然默认使用它。

也许有一个运行库在调试版本中使用它。但我不希望在发布版本中使用它,因为它违背了“只为您需要的东西付费”的原则。