Xcode 7允許使用地址清理器來查找C/C++中的內存問題。爲什麼Xcode在創建地址清理版本時定義_LIBCPP_HAS_NO_ASAN?
https://github.com/google/sanitizers/wiki/AddressSanitizer
上地址車削消毒劑通過編譯和鏈接器標記-fsanitize=address
並且還定義_LIBCPP_HAS_NO_ASAN
。
當從命令行構建我的庫並在未定義_LIBCPP_HAS_NO_ASAN
的消毒版本上運行測試時,我看到非重複的地址清理器報告的內存訪問問題。正如Xcode所定義的那樣,定義_LIBCPP_HAS_NO_ASAN
可以消除衛生消毒劑的問題,但我很好奇它爲什麼需要這樣做。
爲什麼我需要用AppleClang7定義_LIBCPP_HAS_NO_ASAN
以避免在libcxx中出現內存訪問問題?
你確定它正在定義'_LIBCXX_HAS_NO_ASAN'嗎? 所有libC++指定的標誌都以「_LIBCPP」開頭(不是CXX) –
它是_LIBCPP_HAS_NO_ASAN。謝謝馬歇爾。問題已更新。 – jbcoe