Xcode 7 允许使用地址清理程序来查找 C/C++ 中的内存问题。
https://github.com/google/sanitizers/wiki/AddressSanitizer
打开地址清理程序会传递编译和链接器标志-fsanitize=address
,并定义_LIBCPP_HAS_NO_ASAN
.
从命令行构建我的库并在未定义的情况下在经过清理的构建上运行测试时,_LIBCPP_HAS_NO_ASAN
我看到了不可重复的地址清理器报告的内存访问问题。正如 Xcode 所做的那样,定义_LIBCPP_HAS_NO_ASAN
消除了消毒剂问题,但我很好奇它为什么需要这样做。
为什么我需要_LIBCPP_HAS_NO_ASAN
用 AppleClang7 定义以避免在 libcxx 中出现内存访问问题?