gpt4 book ai didi

c++ - 临时字符串上的 std::string_view - 由 ASan 捕获

转载 作者:IT老高 更新时间:2023-10-28 22:22:20 24 4
gpt4 key购买 nike

这是悬空指针|引用示例:

#include <string>
#include <string_view>
#include <iostream>

std::string foo() {
return "test";
}

int main() {
std::string_view bar = foo(); // bar is pointed to destructed string
std::cout << bar << std::endl;
}

地址清理程序无法捕获它,至少使用默认选项。是否可以使用地址清理程序捕获此类错误?

更新。

报告了这个错误:

最佳答案

我的猜测(你没有提供编译器版本)是 operator <<是在外部实现的,因此 Asan 无法对其进行清理和检测错误(除非您使用 Asan 重建 libstdc++)。这是我使用 GCC 6.2 得到的结果(我稍微修改了 repro,因为我无法访问 c++1z ):

  call    operator delete(void*)
.L17:
movq %rbx, %rsi
movl std::cout, %edi
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
call std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)

关于c++ - 临时字符串上的 std::string_view - 由 ASan 捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com