У меня есть код, как показано ниже, и я использую cppcheck для статического анализа. Я обнаружил, что он не может сообщить нулевой указатель для данных.
#define MY_FREE(p) if(p) {free(p);(p)=NULL;}
for(i=0; i<10; i++)
{
ret = list_insert(list, data);
if (1 != ret)
{
MY_FREE(data);
}
other_process(data->item);
}
Но если я раскрою макрос "MY_FREE" напрямую, это сработает.
for(i=0; i<10; i++)
{
ret = list_insert(list, data);
if (1 != ret)
{
if(data) {free(data);(data)=NULL;};
}
other_process(data->item);
}
Есть ли какая-либо конфигурация, которая может решить эту проблему?