MLK.RET.MIGHT
内存可能泄漏
当内存被分配至函数和从函数返回(取决于具体的条件),但未分配到任何变量时,将报告 MLK.RET.MIGHT 问题。被分配的内存在此时丢失。
漏洞与风险
内存泄漏导致应用程序消耗更多内存。这会减少其他应用程序可用的内存量,最终导致操作系统开始分页,系统速度变慢。在严重情况下,应用程序将达到总内存限制,这可能导致应用程序崩溃。
示例 1
复制
void* alloc_data(void* pool)
{
if (pool) {
return pool_alloc(pool, 10);
} else {
return malloc(10);
}
}
void foo(void* pool)
{
alloc_data(pool);
}
Klocwork 生成内存泄漏报告,表明可能通过函数 alloc_data 所分配的动态内存在第 12 行丢失。