PC-линта Gimpel не может отследить висящий указатель? - PullRequest
1 голос
/ 09 сентября 2010

Я недавно использовал PC-lint9 для обнаружения различных ошибок, и это действительно поражает меня, но кажется, что PC-lint9 не может отследить висящий указатель, вот снимок кода, с которым я проверяю.

int* pkInt = new int;
int* pkDangInt = pkInt;
delete pkInt;
( *pkDangInt ) = 1;

Ошибка PC-Lint не обнаружена.Я думаю, что может быть что-то не так с конфигурацией (я не подавлял никаких ошибок и установил уровень предупреждения на 3), так как реклама говорит: «Обнаружение висячих и неинициализированных указателей».кто-нибудь знает как это решить?

1 Ответ

0 голосов
/ 10 сентября 2010

Вероятно, реклама должна читаться как "Обнаружение некоторых свисающих ...".Старая дилемма между ложными срабатываниями и ложными отрицаниями ...

Теперь я ожидаю, что вы думаете, что PC-lint собирается вообще обнаружить любой висячий указатель, он должен обнаружить один ваш пример, который действительно довольнопросто.Но, возможно, более структурный пример ниже проще и действительно единственный обнаруженный вид.Не могли бы вы попробовать?

int* pkDangInt;
{
  int x;
  pkDangInt = &x;
}
( *pkDangInt ) = 1;
...