今天又温习了一下linux下检测内存泄漏工具vargrind的使用:
1. 从网上看,大家都用的是valgrind工具集,valgrind包含了几种工具:
(1) memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。
(2) callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。
(3) cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。
(4) helgrind:用于检查多线程程序的竞态条件。
(5) massif:堆栈分析器,指示程序中使用了多少堆内存等信息。
2. 只说memcheck这个工具,它负责检测内存问题:
(1) 使用未初始化的内存,这块内存的值是随机的。
(2) 使用未指向有效内存的指针,即空指针或者野指针。
(3) 内存越界方法。
(4) 内存复制区域的重叠。
使用未初始化的内存 (Use of uninitialised memory)
使用已经释放了的内存 (Reading/writing memory after it has been free’d)
使用超过malloc分配的内存空间(Reading/writing off the end of malloc’d blocks)
对堆栈的非法访问 (Reading/writing inapp