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;