内存检测

内存检测

由于对指针的深度操作,使得C++程序出现内存问题的风险变得很大。常见的内存问题包括:内存泄漏、重复释放、读写未申请的内存地址、悬挂指针、野指针等。

gcc 自带编译检查 #

google的sanitizers工具集提供了这部分编译检查工具,gcc 4.9以上支持。

需要安装libasan的库: sudo yum install libasan

常用的gcc参数如下:

  • 开启内存泄露检查功能:-fsanitize=leak
  • 开启地址越界检查功能:-fsanitize=address
  • 开启越界详细错误信息:-fno-omit-frame-pointer

只有跑到的代码才能检测出,未被执行的代码无法检测。

Valgrind 教程 #

参考:https://blog.csdn.net/tissar/article/details/87194737