V809. Verifying that a pointer value is not NULL is not required. The 'if (ptr != NULL)' check can be removed.
The analyzer has detected a code fragment that can be simplified. The 'free()' function and 'delete' operator handle the null pointer correctly. So we can remove the pointer check.
Here's an example:
if (pointer != 0) delete pointer;
The check is excess in this case, as the 'delete' operator processes the null pointer correctly. This is how to fix the code:
We cannot call this fix a true optimization, of course. But it allows us to delete an unnecessary string to make the code shorter and clearer.
There's only one case when the pointer check does have sense: when the 'free()' function or 'delete' operator are called VERY many times, and the pointer, at the same time, ALMOST ALWAYS equals zero. If user code contains the check, system functions won't be called. It will even reduce the run time a bit.
But in practice, a null pointer almost always indicates some error. If the program works normally, pointers won't equal zero in 99.99% of cases. That's why the check can be removed.
Note that this warning applies to other functions that correctly process the null pointer they received as an argument, for example, the 'CoTaskMemFree' function.