2

使用 -fsanitize=address 构建时,我有时会看到来自 libc++ 类的不良内存访问问题。

这些错误似乎在每次运行中都不可重复,有时根本不会发生。

怎么了?我怎样才能防止这种情况?

4

1 回答 1

2

“如果 libc++ 容器从插桩(使用 ASan 重建)跨到非插桩代码,Address Sanitizer 可能会报告容器溢出误报。”

如果您的程序与使用 libc++ 而没有 ASAN 构建的库链接,那么您需要_LIBCXX_HAS_NO_ASAN在构建时进行定义。

请参阅为什么 Xcode 在创建地址清理构建时定义 _LIBCPP_HAS_NO_ASAN?

于 2016-10-20T21:21:00.523 回答