AddressSanitizer (ASan) is a fast memory error detector

AddressSanitizer (ASan) 是由Google开发的内存错误检测工具,用于检测C/C++程序中的内存安全问题,如野指针、数组越界、堆栈溢出等‌。

它通过编译时插桩和运行时库替换实现高效检测,通常仅拖慢程序运行速度约2倍‌。

ASan将程序内存的每8字节映射到1字节的“影子内存”中,通过影子字节的值描述内存状态:

  • 0:8 字节均可访问;
  • 1-7:仅前n字节可访问;
  • 负数:标记为不可访问(如释放后的内存)‌

在分配的内存前后插入额外区域(通常为8字节),用于检测缓冲区溢出/下溢‌。

在加载/存储指令前插入检查代码,实时验证内存访问合法性‌。

编译时添加-fsanitize=address选项,运行程序后 ASan会输出错误报告。例如:

image 

ThreadSanitizer (Tsan) 是一款用于C/C++程序的数据冲突探测器。其Linux和Mac版本基于Valgrind

posted @ 2025-11-04 19:26  华容道专家  阅读(10)  评论(0)    收藏  举报