内存检测
由于对指针的深度操作,使得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