转:内存泄漏的检测
一.内存泄漏的介绍: 内存泄漏以发生的方式来分类,内存泄漏可以分为4类: 1.常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。 2.偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。 3.一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。 二.C程序内存泄漏和其它内存常见错误及例子 1.malloc之后没有free引起的内存泄漏 2.指针访问越界 ##############Explame1########################### p = (char *)malloc(10); p[24] = ’0′; free(p); ################################################# 3.两次对同一个地址使用free() ##############Explame2########################### char *p = NULL; char *q = NULL; p = (char *)malloc( 2 ); free(p); free(p); 可以检测出这一行 free(p+2)这样写也可以检测出 free(q); 不能检测出 ################################################# 4.让未初始化数据作为赋值量 ##############Explame1########################### int n,m; m = n; ################################################# 5.将未初始化值作为判断条件 ##############Explame1########################### int n; if(n){ n++; [...]