Clang Static Analyzer: неожиданное предупреждение о нулевом указателе - PullRequest
1 голос
/ 30 октября 2019

У меня есть следующий код:

int s[4096];
unsigned char o = 0;

int main(void) {
    int *n;
    return ((char *) (s + o)) == 0 ? *n : 0;
}

Когда я запускаю Clang Static Analyzer для этого кода, он предупреждает меня, что я разыменую n, потому что (char *) (s + o) является нулевым указателем, которыйэто не так (я могу даже распечатать его и получить адрес, который определенно не равен нулю).

Что мне не хватает?

Clang Analyzer screenshot

Я замечаю, что удаление (char *) приводит к исчезновению предупреждения.

1 Ответ

1 голос
/ 30 октября 2019

Я тестировал Clang Static Analyzer версии 8. Версия 10 больше не выдает предупреждение.

...