1,全局搜索malloc cudaMalloc calloc, 看变量是否都有对应的free cudaFree
2,全局搜索New,看是否有delete对应
【引申】 new 和 malloc 的区别, malloc只是开辟一段内存, new是一个操作符,所以会做很多工作,比如调用构造函数(申请内存并且赋值)。如果构造出错还会报错,这些malloc都没有的功能。
3, 内存泄漏一般都是在for循环内,如下图可以测出哪一个fun有内存泄漏,分别在跑完fun的时候 加入测试代码,【释放变量内存并且返回false】。
/*code TEST*/
//free(variable1 of fun1)
//free(variable2 of fun1)
//return false;
for( XXXXXX )
{
fun1()
/* insert coda TEST*/
fun2()
/* insert coda TEST*/
fun3()
/* insert coda TEST*/
}