作者:金鸽
欢迎访问 sinodragon21.cublog.cn
失败案例:中间的异常情况都调用了释放对内存的API,但最后正常退出前却没有调用
函数框架如下:
MiddleWare_INT function(in, out, ...)
{
MiddleWare_CHAR *allocate_mem = MiddleWare_Malloc(1024*10);
if (exceptionA)
{
MiddleWare_Free();
allocate_mem = NULL;
return MiddleWare_FAILURE;
}
if (exceptionA)
{
MiddleWare_Free();
allocate_mem = NULL;
return MiddleWare_FAILURE;
}
if (exceptionA)
{
MiddleWare_Free();
allocate_mem = NULL;
return MiddleWare_FAILURE;
}
... ...
// 上面的异常情况都释放了堆内存,唯独最后的正常退出忘记了释放,导致内存泄露。一次泄露10兆。 return MiddleWare_SUCCESS;
}
规避方法:
1、代码Review
2、单元测试
3、内存泄露测试,多次运行业务流程,观察该进程消耗的内存量是否平稳,是否有所上升。
阅读(728) | 评论(0) | 转发(0) |