У меня есть следующий код:
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](https://i.stack.imgur.com/3NPgM.png)
Я замечаю, что удаление (char *)
приводит к исчезновению предупреждения.