我发现 Klocwork 报告的一些问题很奇怪。例如 -
if(NULL == m_pMutex.get())
{
Log("found unexpected sharedPtr m_pMutex");
return -1;
}
Time_Critical_Section cs(*m_pMutex);
对于上述代码,Klocwork 报告 NULL 指针取消引用。但我不认为这是一个有效的问题。就好像指针为空一样,它会从函数返回,并且没有机会访问指针。但是 Klocwork 仍然报告这是一个问题。
另一个问题是——
char buf[1000];
sprintf(buf,"%s",name);
对于上面的代码,Klocwork 说上面的代码部分会导致缓冲区溢出,'buf' 的数组索引可能超出范围。但我们确认名称变量不会大于 1000 字节。但 Klocwork 仍然报告这是一个问题。
我们需要让我们的代码没有错误,最终的代码不应该包含任何 Klocwork 的问题。任何人都可以提出一种有效的方法来克服上述问题吗?