PC-Lint Gimpel не может проследить висячий указатель?
-
01-10-2019 - |
Вопрос
Я использовал PC-Lint9, чтобы выяснить разные ошибки в последнее время, и он действительно взорвал мой разум, но кажется, что PC-Lint9 не может проследить висячий указатель, вот снимки кода I экзамен.
int* pkInt = new int;
int* pkDangInt = pkInt;
delete pkInt;
( *pkDangInt ) = 1;
Нет ошибки, обнаруженного PC-Lint. Я думаю, что может быть что-то не так с конфигурацией (я не подавил никакой ошибки и установил уровень предупреждения на 3), поскольку реклама говорит: «Обнаружение висящих и неинициализированных указателей». Кто-нибудь знает, как это решить?
Решение
Вероятно, реклама должна быть прочитана как «обнаружение немного Висячие ... ». Старая дилемма между ложными позитивными и ложными негативами ...
Теперь я ожидаю, что вы думаете, что это вообще обнаружит, что PC-Lint будет обнаруживать любой висячий указатель, он должен обнаружить один пример, который действительно довольно прост. Но, возможно, более структурный ниже, проще и действительно единственный вид обнаружены. Не могли бы вы попробовать это?
int* pkDangInt;
{
int x;
pkDangInt = &x;
}
( *pkDangInt ) = 1;