ПК-линт Gimpel не может отследить оборванный указатель?

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

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

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


person eddielu    schedule 09.09.2010    source источник


Ответы (1)


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

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

int* pkDangInt;
{
  int x;
  pkDangInt = &x;
}
( *pkDangInt ) = 1;
person Pascal Cuoq    schedule 09.09.2010
comment
спасибо Cuoq. Теперь я могу попробовать другой способ вместо того, чтобы пытаться выяснить, как заставить его работать. - person eddielu; 13.09.2010