PC-линт Gimpel не может отследить висящий указатель?

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

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

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

1 ответ

Решение

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

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

int* pkDangInt;
{
  int x;
  pkDangInt = &x;
}
( *pkDangInt ) = 1;
Другие вопросы по тегам