1 什么是Valgrind-Memcheck内存检测
Valgrind-Memcheck用来检测 c/c++程序中出现的内存问题,所有对内存的读写都会被检测到
对一切的malloc()/free()/new/delete 调用都会被捕获。
2 主要检测以下问题:
- 对未初始化内存的使用;
- 读/写释放后的内存块;
- 读/写超出 malloc 等分配的动态内存范围;
- 读/写不适当的栈中内存块;
- 内存泄漏,指向一块内存的指针永远丢失;
- 不正确的 malloc/free 或 new/delete 匹配;
- memcpy()相关函数中的 dst 和 src 指针重叠问题。
Memcheck 检查步骤及注意事项
- 1 在编译程序的时候打开调试模式(gcc 编译器的-g 选项),以便显示行号
- 2 编译时去掉-O1 -O2 等优化选项
- 3 检查的是 C++程序的时候,考虑加上选项: -fno-inline ,这样它函数调用链会很清晰
- 4 执行:valgrind --tool=memcheck --leak-check=full –log-file=[日志] [检测的程序]
- 5.程序运行结束,查看日志中的结果信息