MLK.MIGHT
内存可能泄漏
程序未释放之前分配的内存,并且此时在某些路径上对动态内存的引用可能丢失。
漏洞与风险
内存泄漏导致应用程序消耗更多内存。这会减少其他应用程序可用的内存量,最终导致操作系统开始分页,系统速度变慢。在严重情况下,应用程序将达到总内存限制,这可能导致应用程序崩溃。
示例 1
复制
void foobar(int i)
{
char* p = new char[10];
if(i) {
p = 0;
}
delete[] p;
}
Klocwork 针对第 5 行生成内存泄漏报告,表明存储在 p 中并通过第 3 行的函数 new[] 进行分配的动态内存可能在第 5 行丢失。