Предупреждение анализатора "Dereferencing NULL pointer"
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 23.01.23 20:04
Оценка: :)
Я с незапамятных времен привык компилировать весь свой код со всеми включенными предупреждениями (/W4 /WX /Wall для VC++), и он у меня набит Assume/Assert, так что статическим анализом никогда систематически не занимался — когда-то попробовал анализатор из WDK, но он мне не понравился. В кои веки решил попробовать последние компиляторы VC++ с ключом /analyze. Сразу же пошли (от компилятора 19.29.30147) предупреждения такого вида:

warning C6011: Dereferencing NULL pointer 'p

на таком примерно коде:

void f (int * p) {

  if (p == nullptr) Break ();

  *p = 0;

}


На самом деле на месте таких if у меня везде стоят Assert'ы, которые примерно так и раскрываются.

Хохма в том, что при удалении if'а предупреждение анализатора пропадает.

Чтобы оно пропало при наличии if'а, нужно использовать какую-то особую форму обработки условия? Или это просто глюк анализатора, и надо писать багрепорт?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.