asan内存异常检测工具,功能类似valgrind,不过是gcc自带的原生工具,使用起来非常简单,只需要链接时加上 -lasan 即可。(加上-fsanitize=address编译选项,可以检查出更详细的内存问题,不加也能编译通过也能执行检查)
测试代码如下:
#include <iostream>
#include <string.h>
using namespace std;
int main() {
void* p = malloc(5);
memcpy(p, "123456", 6);
return 0;
}
运行结果如下:报告非常详细,内存异常发生的行号都能看到,也可以识别出来野指针。强烈建议后台服务上线前进行一次内存检查,可以提前避免一些莫名其妙的崩溃问题。