AddressSanitizer 是一个快速的内存错误检测工具,它由一个编译时插桩模块和一个运行库组成。该工具可以检测以下类型的错误:
- 堆、栈和全局变量的越界
- UAF
- Use-After-Return(runtime flag ASAN_OPTIONS=detect_stack_use_after_return=1)
- Use-After-Scope(clang flag -fsanitize-address-use-after-scope)
- Doube-Free
- Memory Leaks
AddressSanitizer会降低程序性能大于两倍(相比之前内存检查工具已经有了很大提升)
原理
https://blog.csdn.net/pang241/article/details/76137969
https://github.com/google/sanitizers/wiki/AddressSanitizerAlgorithm