使用-fsanitize = address构建时,我有时会发现libc ++类的内存访问问题。
错误在逐个运行中似乎不可重复,有时根本不会发生。
发生了什么事?我该如何防止这种情况?
答案 0 :(得分:1)
“如果libc ++容器从已检测(使用ASan重建)转换为非检测代码,则Address Sanitizer可能会报告容器溢出误报。”
如果您的程序链接到使用没有ASAN的libc ++构建的库,那么您需要在构建时定义_LIBCXX_HAS_NO_ASAN
。
请参阅Why does Xcode define _LIBCPP_HAS_NO_ASAN when creating an address-sanitized build?