【C++基础知识】【ASAN】
AddressSanitizer(ASan)是 Google 开发的动态内存错误检测工具,通过编译时插桩和运行时库来捕获多种内存问题。以下是它能检测的主要问题类型及详细说明:
1. 缓冲区溢出(Buffer Overflows)
-
堆缓冲区溢出(Heap-buffer-overflow)
访问动态分配的堆内存时越界(如数组越界)。int *arr = new int[10]; arr[10] = 0; // 越界写入第11个元素(下标0~9)
-
栈缓冲区溢出(Stack-buffer-overflow)
访问栈上的局部变量时越界。int arr[10]; arr[10] = 0; // 越界访问
-
全局缓冲区溢出(Global-buffer-overflow)
访问全局变量或静态变量时越界。