代码检查工具
一.内存泄漏的发生方式
1).常发性
2).偶发性
3).一次性
.隐式
二.代码检查的方式
代码检查的方式分为静态代码检查(Static program analysis)和动态代码检查(Dynamic program analysis)。
三.动态代码检查——Valgrind简单用法
1).valgrind包含的工具
①.memcheck最常用的工具,也是valgrind默认的工具。用来检测程序中出现的内存问题,所有对内存的读写都会被检测到。一切对malloc()/free() 、new/delete的调用都会被捕获,所以它能检测以下问题:
对未初始化内存的使用
读/写释放后的内存块
读/写超出malloc分配的内存块
读/写不适当的栈中内存块
内存泄漏,指向一块内存的指针永远丢失
不正确的malloc/free或new/delete匹配
Memcpy()相关函数中的dst和src指针重叠。
②.callgrind,它不需要在编译源码时附加特殊选项,但推荐加上调试选项,callgrind搜集程序运行时的一些数据,建立函数调用关系图,还可以有选择的进行cache模拟,在运行结束时,它会把分析数据写入一个文件。简而言之,它主要用来检查程序中函数调用过程中出现的问题。
③.cachegrind,它模拟CPU中的一级缓存和二级缓存,能够精确的指出程序中cache的丢失和
原创力文档

文档评论(0)